Digamos que tienen una matriz 2D Numpy:Adición de matrices con diferente número de dimensiones
>>> a = np.random.random((4,6))
y quiero agregar una matriz de 1D a cada fila:
>>> c = np.random.random((6,))
>>> a + c
Esto funciona. Ahora bien, si lo intento de añadir una matriz 1D a cada columna, me sale un error:
>>> 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
puedo solucionar este problema mediante el uso de np.newaxis
:
>>> a + b[:,np.newaxis]
el cual funciona como se esperaba.
¿Cuáles son las reglas de coincidencia de formas para evitar tener que usar np.newaxis? ¿Es que el último elemento de la tupla de forma numpy tiene que coincidir? ¿Esta regla también se aplica a dimensiones más altas? Por ejemplo, las siguientes obras:
>>> a = np.random.random((2,3,4,5))
>>> b = np.random.random((4,5))
>>> a + b
Así que mi pregunta es si esto está documentado en cualquier lugar, y si se trata de un comportamiento que se puede confiar en, o si es mejor utilizar siempre np.newaxis?
Esto ahora tiene sentido, ¡gracias! – astrofrog