我曾经遇到过在MATLAB以下功能依次翻转所有在矩阵的尺寸:如何顺序翻转NumPy数组中的每个维度?
function X=flipall(X)
for i=1:ndims(X)
X = flipdim(X,i);
end
end
凡X
具有尺寸(M,N,P) = (24,24,100)
。我怎样才能在Python中做到这一点,因为X
是一个NumPy数组?
我曾经遇到过在MATLAB以下功能依次翻转所有在矩阵的尺寸:如何顺序翻转NumPy数组中的每个维度?
function X=flipall(X)
for i=1:ndims(X)
X = flipdim(X,i);
end
end
凡X
具有尺寸(M,N,P) = (24,24,100)
。我怎样才能在Python中做到这一点,因为X
是一个NumPy数组?
MATLAB中相当于flipdim
的是flip
的numpy
。请注意,这仅在版本1.12.0中可用。
因此,它只是:
import numpy as np
def flipall(X):
Xcopy = X.copy()
for i in range(X.ndim):
Xcopy = np.flip(Xcopy, i)
return Xcopy
因此,你只需调用它像这样:
Xflip = flipall(X)
但是,如果你知道先验你只有三个维度,您可以通过简单的操作对代码进行硬编码:
def flipall(X):
return X[::-1,::-1,::-1]
这将每个维度都一个接一个地翻转。
如果您不具有版本1.12.0(感谢用户hpaulj),你可以使用slice
做同样的操作:
import numpy as np
def flipall(X):
return X[[slice(None,None,-1) for _ in X.shape]]
什么是X'的'在Python格式?它是一个列表还是一个NumPy数组?有太多的信息来回答你的问题。 – rayryeng
@rayryeng - 这是一个numpy数组 – Wajih
谢谢。你没有在你的文章中说清楚。 – rayryeng