scipy 如何旋转一个numpy数组?

fzwojiic  于 2023-01-20  发布在  其他
关注(0)|答案(3)|浏览(176)

我有一些numpy/scipy问题。我有一个3D数组,它以二进制方式表示一个椭球体[ 0出椭球体]。问题是我想旋转我的形状一定程度。你认为这可能吗?或者有没有一种有效的方法直接写旋转椭球体方程?

mf98qq94

mf98qq941#

这只是一个简短的回答。如果你需要更多的信息,或者你不知道如何做到这一点,那么我会编辑这篇文章,并添加一个小例子。
旋转数据点矩阵的正确方法是做矩阵乘法。旋转矩阵可能是一个n * n矩阵,你必须将它与每个点相乘。如果你有3d矩阵,你就有i*j*k-points这样的东西来绘图。这意味着你必须做i*j*k次才能找到新的点。也许你应该考虑另一个矩阵的绘图,这只是一个二维矩阵,只存储绘图点,没有零值。
有一些算法可以更快地计算低值矩阵的结果,但只要谷歌一下就可以了。
你明白我的意思了吗?还是你还有一些问题?抱歉给你这个粗略的概述。
最好的问候

izkcnapc

izkcnapc2#

看一下命令numpy.shape,我曾经用它来转置一个数组,但我不知道它是否适合您的需要。

7cwmlq89

7cwmlq893#

旋转非矩形度数是棘手的,因为旋转后的正方形不再适合矩阵。
最简单的方式是通过以下方式转置2D阵列/矩阵:

import numpy as np
... x = np.array([[1,2,3],[4,5,6],[7,8,9]])
x
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

x.T      # transpose the array

array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

如果你需要一个显式的数组循环,请检查scipy库中的ndimage包:

from scipy import ndimage, datasets
img = datasets.ascent()
img_45 = ndimage.rotate(img, 45, reshape=False)

相关问题