沿任意轴的切片

6

我有一个numpy数组A,如下:

A.shape[axis] = n+1.

现在我想通过沿着轴axis选择索引0,..,n-11,...,n分别构建两个切片BC,如下:

B.shape[axis] = C.shape[axis] = n

BC在其他轴上的大小与A相同。不得复制数据。

1个回答

10
# exemple data
A = np.random.rand(2, 3, 4, 5)
axis = 2
n = A.ndim
# building n-dimensional slice
s = [slice(None), ] * n
s[axis] = slice(0, n - 1)
B = A[s]
s[axis] = slice(1, n)
C = A[s]

一行代码:

B = A[[slice(None) if i != axis else slice(0, n-1) for i in xrange(n)]]
C = A[[slice(None) if i != axis else slice(1, n) for i in xrange(n)]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接