6

A私は次のようなnumpy配列を持っています

A.shape[axis] = n+1.

ここで、2つのスライスを作成Bし、インデックスを選択して、それぞれ軸に沿って作成します。したがってCA0, .., n-11, ..., naxis

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

およびBとは、他の軸に沿ったCものと同じサイズです。Aデータのコピーがあってはなりません。

4

1 に答える 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)]]
于 2012-09-05T08:07:50.377 に答える