【问题标题】:Indexing numpy array with another numpy array用另一个 numpy 数组索引 numpy 数组
【发布时间】:2011-07-27 08:56:43
【问题描述】:

假设我有

a = array([[1, 2],
           [3, 4]])

b = array([1,1])

我想在索引a中使用b,也就是做a[b]得到4而不是[[3, 4], [3, 4]]

我应该可以的

a[tuple(b)]

有没有更好的方法?

谢谢

【问题讨论】:

  • 我认为这不是问题。为什么你认为 a[tuple(b)] 不好?

标签: python multidimensional-array numpy


【解决方案1】:

根据NumPy tutorial,正确的做法是:

a[tuple(b)]

【讨论】:

    【解决方案2】:

    假设您要访问a 的子向量,其中有n 个索引对存储在b 中,如下所示:

    b = array([[0, 0],
           ...
           [1, 1]])
    

    这可以按如下方式完成:

    a[b[:,0], b[:,1]]
    

    对于单对索引向量,这将更改为a[b[0],b[1]],但我猜tuple 方法更易于阅读,因此更可取。

    【讨论】:

    • 但我想知道哪个更快? tuple() 不会创建副本,而上面的视图不会?
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2018-12-20
    • 2021-05-07
    • 2020-06-11
    相关资源
    最近更新 更多