2024-03-29 08:50:41 发布
网友
我有一些三维数字阵列,需要以各种方式进行转换。E、 g.:
x.shape = (4, 17, 17)
这个数组是4个平面的1个样本,每个平面的大小为17x17。变换每个平面的最有效方法是什么:flipud、fliplr和rot90?有比使用for循环更好的方法吗?谢谢!在
看看这些函数的代码:
def fliplr(...): .... return m[:, ::-1]
换句话说,它返回一个在第二维度上具有反向切片的视图
您的x[p, :, :] = np.fliplr(x[p, :, :]将反向切片应用于最后一个维度,因此整个数组的等效值应该是
x[p, :, :] = np.fliplr(x[p, :, :]
翻转第二个轴
等等
np.rot90有4个大小写(k);对于k=1来说是
np.rot90
k=1
return fliplr(m).swapaxes(0, 1)
换句话说m[:, ::-1].swapaxes(0,1)
m[:, ::-1].swapaxes(0,1)
在你的飞机上工作你会做一些
m[:, :,::-1].swapaxes(1,2)
或者你可以先做swapaxes/transpose
swapaxes/transpose
m.transpose(0,2,1)[:, :, ::-1]
你有足够的工具来改变飞机的形状吗?在
正如我在最近的另一个问题https://stackoverflow.com/a/41291462/901925中所讨论的,flip...返回一个视图,但是使用flip和swap的{}很可能会返回一个副本。不管怎样,numpy都将为您提供最有效的版本。在
flip...
numpy
看看这些函数的代码:
换句话说,它返回一个在第二维度上具有反向切片的视图
您的
^{pr2}$x[p, :, :] = np.fliplr(x[p, :, :]
将反向切片应用于最后一个维度,因此整个数组的等效值应该是翻转第二个轴
^{3}$等等
np.rot90
有4个大小写(k);对于k=1
来说是换句话说
m[:, ::-1].swapaxes(0,1)
在你的飞机上工作你会做一些
或者你可以先做
swapaxes/transpose
你有足够的工具来改变飞机的形状吗?在
正如我在最近的另一个问题https://stackoverflow.com/a/41291462/901925中所讨论的,}很可能会返回一个副本。不管怎样,
flip...
返回一个视图,但是使用flip和swap的{numpy
都将为您提供最有效的版本。在相关问题 更多 >
编程相关推荐