python - español - ¿Cómo multiplicar la matriz numpy 2D con la matriz numpy 1D?
reshape python (2)
Las dos matrices:
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b
Lo que quiero es:
c = [[6,9,6],
[25,30,5]]
Pero, estoy recibiendo este error:
ValueError: operands could not be broadcast together with shapes (2,3) (2)
¿Cómo multiplicar una matriz nD con una matriz 1D, donde len(1D-array) == len(nD array)
?
Otra estrategia es reshape la segunda matriz, para que tenga la misma cantidad de dimensiones que la primera matriz:
c = a * b.reshape((b.size, 1))
print(c)
# [[ 6 9 6]
# [25 30 5]]
Alternativamente, el atributo de shape de la segunda matriz se puede modificar in situ:
b.shape = (b.size, 1)
print(a.shape) # (2, 3)
print(b.shape) # (2, 1)
print(a * b)
# [[ 6 9 6]
# [25 30 5]]
numpy.newaxis
convertir la matriz b en una matriz de forma (2, 1), use Ninguno o numpy.newaxis
en la tupla de índice:
import numpy
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b[:, None]
Aquí está el document .