如何使用另一个保存索引的numpy数组索引numpy数组?

时间:2014-02-09 04:05:32

标签: python arrays numpy

这应该是一项简单的任务,但我很惭愧地承认我被困住了。

我有一个名为X的numpy数组:

X.shape(10,3),看起来像是

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

我想使用另一个名为idx的numpy数组中的索引选择此数组的第1,2和第3行:

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

当我尝试时 new_array = X[idx]或其变体, 我收到错误。

如何使用另一个包含索引的numpy数组索引numpy数组?

提前为这样一个基本问题道歉。

1 个答案:

答案 0 :(得分: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, :]