Индексирование массива numpy другим массивом - PullRequest
18 голосов
/ 01 апреля 2011

Предположим, у меня есть

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

и

b = array([1,1])

Я бы хотел использовать b в индексе a, то есть сделать a [b] и получить 4 вместо [[3, 4], [3, 4]]

Я, наверное, могу сделать

a[tuple(b)]

Есть ли лучший способ сделать это?

Спасибо

Ответы [ 2 ]

17 голосов
/ 01 апреля 2011

Согласно учебному пособию:

a[tuple(b)] 

- правильный способ сделать это:

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

5 голосов
/ 21 февраля 2013

Предположим, вы хотите получить доступ к подвектору a с n индексными парами, хранящимися в b, например:

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

Это можно сделать следующим образом:

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

Для вектора индекса одной пары это меняется на a[b[0],b[1]], но я думаю, что подход tuple легче читать и, следовательно, предпочтительнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...