2017-08-21 8 views
0

numpy配列のインデックスをチェックしていましたが、以下のような場合に混乱しました。リストを配列に変換すると、別の出力が表示される理由を教えてください。私は何を間違えているのですか?numpyインデックスの動作方法

In [124]: a = np.arange(12).reshape(3, 4) 
Out[125]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]) 

In [126]: j = [[0, 1], [1, 2]] 

In [127]: a[j] 
Out[127]: array([1, 6]) 

In [128]: a[np.array(j)] 
Out[128]: 
array([[[ 0, 1, 2, 3], 
     [ 4, 5, 6, 7]], 

     [[ 4, 5, 6, 7], 
     [ 8, 9, 10, 11]]]) 
+0

こんにちは、ここで読んでみてください。https://docs.scipy.org/doc/numpy-1.10.0/user/basics.indexing.html –

+0

https:// stackoverflow.com/questions/45675801/why-does-numpy-advanced-indexing-yield-different-results-for-list-of-lists-and-n#comment78316662_45675801こことhttps://stackoverflow.com/questions/40598824/advanced-slicing-when-passed-list-to-numpyの代わりに – hpaulj

+0

@hpaulj、参考にしていただきありがとうございます。 – Debabrata

答えて

2

選択オブジェクトが埋め込まれた配列を含有する単一の短い非ndarray配列である場合、それはタプルであるかのように、シーケンスが処理される処理文書化されていない下位互換性のビットがあります。それはこのことを意味します。ドキュメントはあなたが期待するだろうと

a[j] 

a[[0, 1], [1, 2]] 

の代わりとして扱われます。

関連する問題