假设我有一个多维数组,其形状在运行时是未知的。
如何沿着给定轴k反转它,而这个轴也是在运行时不知道的呢?
符号somearray[:,:,::-1,:,:]
依赖于静态维度引用,就像这个SO问题中所示,因此我不能在这里使用它。
slice
对象的元组,或者像下面这样做: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]