如何使用多个索引从NumPy数组中获取值

use*_*853 15 python numpy scipy

我有一个看起来像这样的NumPy数组:

arr = [100.10, 200.42, 4.14, 89.00, 34.55, 1.12]
Run Code Online (Sandbox Code Playgroud)

如何通过索引从此数组中获取多个值:

例如,如何获取索引位置1,4和5的值?

我正在尝试这样的事情,这是不正确的:

arr[1, 4, 5]
Run Code Online (Sandbox Code Playgroud)

bog*_*ron 35

试试这样:

>>> arr = np.array([100.10, 200.42, 4.14, 89.00, 34.55, 1.12])
>>> arr[[1,4,5]]
array([ 200.42,   34.55,    1.12])
Run Code Online (Sandbox Code Playgroud)

对于多维数组:

>>> arr = np.arange(9).reshape(3,3)
>>> arr
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> arr[[0, 1, 1], [1, 0, 2]]
array([1, 3, 5])
Run Code Online (Sandbox Code Playgroud)

  • 如果索引是2D怎么办?是否可以使用2D数组作为索引来索引2D数组? (3认同)

igo*_*igo 6

另一个解决方案是np.take按照https://docs.scipy.org/doc/numpy-1.13.0/reference/generation/numpy.take.html中的指定使用

a = [4, 3, 5, 7, 6, 8]
indices = [0, 1, 4]
np.take(a, indices)
# array([4, 3, 6])
Run Code Online (Sandbox Code Playgroud)


Jor*_*ley 5

你很接近

>>> print arr[[1,4,5]]
[ 200.42   34.55    1.12]
Run Code Online (Sandbox Code Playgroud)