【发布时间】:2012-08-29 21:32:00
【问题描述】:
我有一个 numpy 数组 A 这样
A.shape[axis] = n+1.
现在我想通过分别沿轴axis 选择索引0, .., n-1 和1, ..., n 来构造A 的两个切片B 和C。因此
B.shape[axis] = C.shape[axis] = n
和B 和C 在其他轴上与A 具有相同的大小。不得复制数据。
【问题讨论】:
我有一个 numpy 数组 A 这样
A.shape[axis] = n+1.
现在我想通过分别沿轴axis 选择索引0, .., n-1 和1, ..., n 来构造A 的两个切片B 和C。因此
B.shape[axis] = C.shape[axis] = n
和B 和C 在其他轴上与A 具有相同的大小。不得复制数据。
【问题讨论】:
# 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)]]
【讨论】: