Come sostituire i valori da un array numpy con un altro array con indici

Oct 08 2020

Ho due array e un elenco con indici

Sorgente array (array 01):

x = np.array([[1,2,3], [4,5,6], [7,8,9]])
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

Array con nuovi valori (array 02):

y = np.array([11, 22, 33])
array([11, 22, 33])

e una lista con indici

a = [1,2,1]
[1, 2, 1]

Devo sostituire i valori dell'array 02 nell'array 01 in base agli indici

Il ritorno previsto:

array([[1, 11, 3],
       [4, 5, 22],
       [7, 33, 9]])

Come farlo senza loop?

Grazie in anticipo.

Risposte

1 mathfux Oct 08 2020 at 05:26

Prova l'indicizzazione avanzata :

x[np.arange(len(x)), a] = y

Ho trovato anche questo tutorial più facile per me rispetto alla documentazione ufficiale.