Ответ 1
Вам нужно преобразовать массив b в массив формы (2, 1), использовать None или numpy.newaxis
в кортеже индекса:
import numpy
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b[:, None]
Вот .
Два массива:
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b
Я хочу:
c = [[6,9,6],
[25,30,5]]
Но я получаю эту ошибку:
ValueError: operands could not be broadcast together with shapes (2,3) (2)
Как умножить массив nD с 1D-массивом, где len(1D-array) == len(nD array)
?
Вам нужно преобразовать массив b в массив формы (2, 1), использовать None или numpy.newaxis
в кортеже индекса:
import numpy
a = numpy.array([[2,3,2],[5,6,1]])
b = numpy.array([3,5])
c = a * b[:, None]
Вот .
Другая стратегия - reshape второй массив, поэтому он имеет такое же количество измерений, что и первый массив:
c = a * b.reshape((b.size, 1))
print(c)
# [[ 6 9 6]
# [25 30 5]]
В качестве альтернативы атрибут shape второго массива может быть изменен на месте:
b.shape = (b.size, 1)
print(a.shape) # (2, 3)
print(b.shape) # (2, 1)
print(a * b)
# [[ 6 9 6]
# [25 30 5]]