2014-02-09 111 views
2

這應該是簡單的任務,但我很慚愧地承認自己被卡住了。如何使用另一個包含索引的numpy數組索引一個numpy數組?

我有一個numpy的陣列,稱爲X

X.shape(10,3),它看起來像

[[ 0. 0. 13. ] 
[ 0. 0. 1. ] 
[ 0. 4. 16. ] 
..., 
[ 0. 0. 4. ] 
[ 0. 0. 2. ] 
[ 0. 0. 4. ]] 

我想選擇這個數組的1,第2和第3排,使用指數在這個其他numpy的陣列,稱爲idx

idx.shape(3,),它看起來像[1 2 3]

當我嘗試
new_array = X[idx]或此變化, 我收到錯誤。

如何使用另一個包含索引的numpy數組索引一個numpy數組?

提前爲這樣一個基本問題道歉。

回答

3

我不喜歡這樣寫道:

>>> import numpy as np 
>>> x = np.arange(30).reshape((10, 3)) 
>>> x 
array([[ 0, 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]]) 
>>> idx = np.array([1,2,3]) 
>>> x[idx, ...] 
array([[ 3, 4, 5], 
     [ 6, 7, 8], 
     [ 9, 10, 11]]) 

注意,在這種情況下,省略號可以通過一個簡單的切片取代,如果你寧願:

x[idx, :] 
+0

我還沒有看到的東西像'x [idx,...]'之前。在數組索引中做什麼是三個點?我顯然需要花上一個週末來學習numpy。 –

+0

@ MattO'Brien - '...'是Python的Ellipsis對象。看到這個職位的一些鏈接。 http://stackoverflow.com/a/118395/748858 – mgilson

+0

錯誤......顯然這些鏈接已損壞。請檢查[this](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)。 – mgilson