5

假设我有一个多维数组,其形状直到运行时才知道。

如何沿给定的轴 k 反转它,直到运行时才知道?

该符号somearray[:,:,::-1,:,:]依赖于静态维度引用,就像在另一个 SO question中一样,所以我不能在这里使用它。

4

2 回答 2

9

您可以构造一个slice对象元组,例如 @ali_m 建议,或者执行以下操作:

reversed_arr = np.swapaxes(np.swapaxes(arr, 0, k)[::-1], 0, k)

这会将所需的轴放在形状元组的前面,然后反转第一个轴,然后将其返回到其原始位置。

有些人认为这种方法缺乏可读性,但我不同意。

于 2013-06-29T02:07:20.387 回答
7

我会为此使用一组slice对象:

def reversedim(M,k=0):
    idx = tuple((slice(None,None,-1) if ii == k else slice(None) 
            for ii in xrange(M.ndim)))
    return M[idx]
于 2013-06-29T00:54:59.010 回答