Numpy оперирует несколькими дублирующимися индексами - PullRequest
0 голосов
/ 23 января 2019

Я хочу посчитать элементы из двух измерений Когда я делаю приращение по пакетным индексам:

a = np.zeros((3,3))
i = [2,0,2] # indices in axis 0
j = [1,2,1] # indices in axis 1
a[i,j] += 1

выход

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

Вопрос :
a[2,1] += 1 происходит только один раз из-за дублирования индексов. Есть ли способ сделать это происходит несколько раз, поэтому результат будет

array([[0., 0., 1.],
       [0., 0., 0.],
       [0., 2., 0.]])

1 Ответ

0 голосов
/ 23 января 2019

Это может быть немного не интуитивно, но numpy обрабатывает list s и tuple s по-разному при индексировании, например: a[[2, 1]] += 1 добавляет единицу к строкам 1 и 2, тогда как a[(2, 1)] += 1 добавляетодин в ячейку (2, 1).

В вашем случае вы, вероятно, просто хотите

a = np.zeros((3,3))
a[[2,0,2],[1,2,1]] += 1
a[(2, 1)] += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...