2016-12-15 10 views
4

使用numpyの部分行列3D:Iは、3D numpyのアレイ有する単一インデックス項目

K = (np.arange(36)).reshape((4,3,3))+1 
[[[ 1 2 3] 
[ 4 5 6] 
[ 7 8 9]] 

[[10 11 12] 
[13 14 15] 
[16 17 18]] 

[[19 20 21] 
[22 23 24] 
[25 26 27]] 

[[28 29 30] 
[31 32 33] 
[34 35 36]]] 

K内の各項目は行列です。 は今、私はそれがこのように可能であることを知っている特定のインデックスベクトル

を使用して、すべての2D部分行列を取得したい:

idx = np.s_[:,:2,:2] 
K_sub = K[idx] 
[[[ 1 2] 
[ 4 5]] 

[[10 11] 
[13 14]] 

[[19 20] 
[22 23]] 

[[28 29] 
[31 32]]] 

問題は、私は、任意のインデックス配列を使用したくないということです行と列を選択するスライス。

K_sub = [magic_indexing] 

ない:

K_sub = np.array([k_[train][:,train] for k_ in K]) 

が存在するそれを行うための簡単な方法

また、私は、部分行列のリストを取得するために単一のオブジェクトを使用するような何かをしたいですか?そのように、それはあなたのためだけで十分ですが、一つの方法は、np.ix_となりますので、advanced-indexing使用している場合

答えて

0

わからない -

K[np.ix_(np.arange(K.shape[0]), train, train)] 
+0

それは完璧に動作し、TY! –

関連する問題