假设我有一个多维数组,其形状直到运行时才知道。
如何沿给定的轴 k 反转它,直到运行时才知道?
该符号somearray[:,:,::-1,:,:]
依赖于静态维度引用,就像在另一个 SO question中一样,所以我不能在这里使用它。
假设我有一个多维数组,其形状直到运行时才知道。
如何沿给定的轴 k 反转它,直到运行时才知道?
该符号somearray[:,:,::-1,:,:]
依赖于静态维度引用,就像在另一个 SO question中一样,所以我不能在这里使用它。
您可以构造一个slice
对象元组,例如 @ali_m 建议,或者执行以下操作:
reversed_arr = np.swapaxes(np.swapaxes(arr, 0, k)[::-1], 0, k)
这会将所需的轴放在形状元组的前面,然后反转第一个轴,然后将其返回到其原始位置。
有些人认为这种方法缺乏可读性,但我不同意。
我会为此使用一组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]