沿任意轴切片

时间:2012-09-05 07:44:53

标签: python numpy indexing

我有一个numpy数组A,这样

A.shape[axis] = n+1.

现在,我想通过分别沿轴{{1}选择索引BC来构建A0, .., n-1 1, ..., n两个切片}。因此

axis

B.shape[axis] = C.shape[axis] = n B与其他轴的C大小相同。必须没有数据复制。

1 个答案:

答案 0 :(得分:8)

# 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)]]
相关问题