如何旋转numpy数组?
我遇到了一些关于numpy和scipy的问题。我有一个三维数组,它以二进制的方式表示一个椭球体,里面的值是0表示不在椭球体内。现在我想把这个形状旋转一定的角度。你觉得这可能吗?或者有没有更有效的方法可以直接写出带旋转的椭球体方程?
3 个回答
0
用非矩形的角度旋转是比较麻烦的,因为旋转后的正方形就不再适合放在原来的矩阵里了。
最简单的方法是通过以下方式转置一个二维数组/矩阵:
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)
1
看看这个命令 numpy.shape
。我曾经用它来转置一个数组,但我不确定它是否适合你的需求。祝好运!
2
我来简单回答一下。如果你需要更多信息或者不知道怎么做,我可以再补充一些例子。
要旋转你的数据点矩阵,正确的方法是进行矩阵乘法。你的旋转矩阵可能是一个n*n的矩阵,你需要把它和每个点相乘。如果你有一个三维矩阵,可能会有类似于i*j*k-点
的东西用于绘图。这意味着在你的情况下,你需要进行i*j*k
次操作来找到新的点。也许你可以考虑使用另一个矩阵来绘图,这个矩阵只是一个二维矩阵,只存储绘图点,而不存储零值。
有一些算法可以更快地计算低值矩阵的结果,不过你可以自己去网上查查。
你明白我的意思了吗?还是有其他问题?抱歉我只给了个大概。
祝好