问题 使用另一个numpy数组索引numpy数组


假设我有

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

b = array([1,1])

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

我可以做到

a[tuple(b)]

有没有更好的方法呢?

谢谢


12269
2018-04-01 01:40


起源

我不认为这是一个问题。为什么你认为[元组(b)]是坏的? - linjunhalida


答案:


根据numpy教程:

a[tuple(b)] 

是这样做的正确方法:

http://www.scipy.org/Tentative_NumPy_Tutorial#head-3f4d28139e045a442f78c5218c379af64c2c8c9e


12
2018-04-01 01:52





假设您要访问的子向量 a 存储n个索引对 b像这样:

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

这可以按如下方式完成:

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

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


3
2018-02-21 09:59



但我想知道哪个更快?不会tuple()创建副本,而上面的视图不会? - Terry Brown