你如何顺序翻转NumPy数组中的每个维度?

时间:2016-09-15 05:34:39

标签: python matlab numpy flip

我在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做到这一点?

1 个答案:

答案 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]]