我在MATLAB中遇到了以下函数,它按顺序翻转矩阵中的所有维度:
function X=flipall(X)
for i=1:ndims(X)
X = flipdim(X,i);
end
end
其中X
的尺寸为(M,N,P) = (24,24,100)
。考虑到X
是一个NumPy数组,我怎么能用Python做到这一点?
答案 0 :(得分:5)
MATLAB中的flipdim
相当于numpy
中的flip
。请注意,这仅适用于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]]