Как изменить много значений сразу np.array, зная только индекс - PullRequest
0 голосов
/ 15 апреля 2020

Допустим, у нас есть:

arr = np.zerso(3,10)
indexes = [1,2,5,9]
in: arr[0][indexes]=1
out: 
0110010001
0000000000
0000000000

Я хочу сделать все манипуляции за один шаг

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Если вы хотите установить arr для значения выборки в одной строке:

arr = 1*np.isin(np.arange(3*10),[1,2,5,9]).reshape((3,10))

это не очень эффективно, хотя

arr = np.zeros((3,10))
arr[0,[1,2,5,9]] = 1    # this is more efficient
0 голосов
/ 15 апреля 2020

Ваш код исправлен:

In [347]: arr = np.zeros((3,10),int)                                                                   
In [348]: arr[0,[1,2,5,9]] = 1                                                                         
In [349]: arr                                                                                          
Out[349]: 
array([[0, 1, 1, 0, 0, 1, 0, 0, 0, 1],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

Это меняет сразу 4 значения. Что еще ты ожидал?

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