Sto facendo una sommatoria abbastanza complicata usando una matrice con numpy. La forma della matrice è matrix.shape = (500, 500)
e la forma dell'array è arr.shape = (25,)
. Il funzionamento è il seguente:Make numpy.sum() restituisce una somma di matrici anziché un singolo numero
totalsum = np.sum([i * matrix for i in arr])
Ecco quello che non capisco:
np.sum()
è molto lento e restituisce un singolo galleggiante, float64
. Facendo la stessa operazione con Python sum.()
, cioè
totalsum2 = sum([i*matrix for i in arr])
preserva la forma della matrice. Cioè, la forma risultante è totalsum2.shape() = (500, 500)
. Eh?
Penso anche che sia strano che np.sum()
impieghi più tempo di sum()
, in particolare quando stiamo lavorando con numpy ndarrays.
Che cosa sta succedendo esattamente qui? In che modo np.sum()
somma i valori sopra riportati rispetto a sum()
?
Desidero np.sum()
per mantenere la forma della matrice. Come posso impostare le dimensioni in modo che np.sum()
mantenga le dimensioni della matrice e non restituisca un singolo float?
Questa operazione deve essere semplicemente scritta come 'np.sum (arr) * matrice '. – Daniel
@Ophion la matrice e la matrice non hanno la stessa forma. Voglio moltiplicare l'intera matrice per ogni valore nella matrice. Quindi, voglio sommare tutte le matrici risultanti. – JesseTrevve
Questo può essere scritto nella notazione einsum come 'np.einsum (" k, ij-> ij ", arr, matrix)'. Come si può vedere non ci sono indici comuni tra tensori. Puoi verificare tu stesso calcolando uno dei metodi sopra indicati e la risposta che hai selezionato come corretta. – Daniel