2017-02-27 7 views
1

私はとして配列を持っている:私はPythonのアレイ状差

A[ [0,0,1,1], [0,3,2,5] ].shape 
Out[151]: (4,) 

のために同じことをしようとした場合、

A[0:1].shape 
Out[150]: (1, 8) 

ながら:私はの形を見つけた場合

A 
Out[159]: 
array([[ 1, 2, 3, 4, 5, 6, 7, 8], 
     [ 2, 4, 6, 8, 10, 12, 14, 16]]) 

最初の配列は1行8列、2列目は1行4列のようですが、なぜ2番目の答えは(1,4)でなく(1,4)で表示されますか?

答えて

1

2番目のケースは、あなたが何を意味すると思われるかを意味するものではありません。

次のように空想-インデックスのこの種は、numpyの中で動作する方法は次のとおりです。Aは2dimアレイとI1 = [a1, a2, ...]あるとI2 = [b1, b2, ...]は、int型の配列/リストされている場合は、このインデックス:

A[I1,I2] 

は意味:

np.array([ A[a1,b1], A[a2,b2], A[a3,b3], ... ]) 

I1は、dim = 0に沿ったインデックスを指し、I2は、dim = 1に沿った対応するインデックスを指す。これは、各ペアがスライスされた配列に含める単一の要素を定義していることを意味します。


これについて考える別の方法:

A[np.where(A == x)] 
+0

をが、その後アウト '何をするか、[151]:np.whereによって返されたタプル、そして何を期待について考えるこれが意味すること(4) '実際には? – Sarang

+0

@Sarangあなたのケースでは 'len(I1)== len(I2)== 4'なので、あなたは' A'から4つの要素を "選ぶ" – shx2