Diciamo che hanno una matrice 2D Numpy:array con diverso numero di dimensioni
>>> a = np.random.random((4,6))
e voglio aggiungere una matrice 1D per ogni riga:
>>> c = np.random.random((6,))
>>> a + c
Questo funziona. Ora, se provo l'aggiunta di una serie 1D per ogni colonna, ottengo un errore:
>>> b = np.random.random((4,))
>>> a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
posso risolvere questo problema utilizzando np.newaxis
:
>>> a + b[:,np.newaxis]
che funziona come previsto.
Quali sono le regole di corrispondenza delle forme per evitare di dover utilizzare np.newaxis? È che l'ultimo elemento della tupla di forma numpy deve corrispondere? Questa regola si applica anche alle dimensioni superiori? Ad esempio, le seguenti opere:
>>> a = np.random.random((2,3,4,5))
>>> b = np.random.random((4,5))
>>> a + b
Quindi la mia domanda è se questo è documentato da nessuna parte, e se si tratta di un comportamento che può essere invocato, o se è meglio usare sempre np.newaxis?
Questo ora ha senso - grazie! – astrofrog