Tengo algunos problemas para entender las reglas para la transmisión de matrices en Numpy.Reglas de difusión de matrices numeradas
Obviamente, si realiza la multiplicación de elementos en dos matrices de las mismas dimensiones y forma, todo está bien. Además, si multiplicas una matriz multidimensional por un escalar, funciona. Esto lo entiendo
Pero si tiene dos matrices N-dimensionales de formas diferentes, no está claro para mí exactamente cuáles son las reglas de difusión. Esto documentation/tutorial explica que: Para poder emitir, el tamaño de los ejes finales para ambas matrices en una operación debe ser del mismo tamaño o uno de ellos debe ser uno.
bien, así que supongo por eje arrastrado se están refiriendo a la N
en una matriz M x N
. Entonces, eso significa que si intento multiplicar dos matrices en 2D (matrices) con igual cantidad de columnas, ¿debería funcionar? Excepto que no lo hace ...
>>> from numpy import *
>>> A = array([[1,2],[3,4]])
>>> B = array([[2,3],[4,6],[6,9],[8,12]])
>>> print(A)
[[1 2]
[3 4]]
>>> print(B)
[[ 2 3]
[ 4 6]
[ 6 9]
[ 8 12]]
>>>
>>> A * B
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
Dado que tanto A
y B
tienen dos columnas, yo habría pensado que esto funcionaría. Por lo tanto, probablemente estoy malinterpretando algo aquí sobre el término "eje final" y cómo se aplica a las matrices N-dimensionales.
¿Alguien puede explicar por qué mi ejemplo no funciona y qué se entiende por "eje al final"?
Esta es una muy buena explicación de la transmisión, http://www.scipy.org/EricsBroadcastingDoc –
¿podría agregar la etiqueta "broadcasting" por favor? – denis
El enlace en el comentario de @BiRico ahora es http://wiki.scipy.org/EricsBroadcastingDoc Me pregunto por qué se movió al * archivo volcado *. – iled