Обновление индексации массива numpy 2d из другого массива - PullRequest
1 голос
/ 23 февраля 2020

Есть ли способ numpy сделать ниже, не используя al oop?

A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
I = np.array([0, 1, 0, 1, 1])
V = np.array([6, 6, 6, 6, 6])

Я хочу обновить A так, чтобы у него было 6 в соответствующем индексе, указанном I. Итак, A становится ...

A = np.array([[6,1],[2,6],[6,3],[4,6],[5,6]])

Пробовал следующее, но они не работали ..

A[I] = V
A[:,I] = V

1 Ответ

1 голос
/ 23 февраля 2020

Попробуйте: A[np.arange(len(A)), I] = V:

In [15]: import numpy as np                                                                                              

In [16]: A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])                                                                   

In [17]: I = np.array([0, 1, 0, 1, 1])                                                                                   

In [18]: V = np.array([6, 6, 6, 6, 6])                                                                                   

In [19]: A[np.arange(len(A)), I] = V                                                                                     

In [20]: A                                                                                                               
Out[20]: 
array([[6, 1],
       [2, 6],
       [6, 3],
       [4, 6],
       [5, 6]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...