【问题标题】:How does one index a numpy array using another numpy array that holds the indices?如何使用另一个保存索引的 numpy 数组来索引 numpy 数组?
【发布时间】:2014-02-09 04:05:32
【问题描述】:

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

我有一个 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 行,使用另一个名为 idx 的 numpy 数组中的索引:

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

当我尝试
new_array = X[idx] 或对此进行更改时, 我收到错误。

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

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

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    我是这样做的:

    >>> 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, :]
    

    【讨论】:

    • 我以前没见过像x[idx, ...] 这样的东西。数组索引中的三个点在做什么?我显然需要花一个周末学习 numpy。
    • @MattO'Brien -- ... 是 python Ellipsis 对象。有关一些链接,请参见这篇文章。 stackoverflow.com/a/118395/748858
    • 错误...显然这些链接已损坏。请检查this 一个。
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 2018-10-25
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多