Я пытаюсь выполнить продукт Matrix-Vector и добавляю скалярное число к постоянному вектору. Я хотел бы сделать это с четырьмя различными весами для этого вектора, поэтому я попытался векторизовать функцию. Теперь я получаю противоречивые измерения.
Код выглядит следующим образом:
import numpy as np
M = np.random.rand(3,3)
d = np.random.rand(3)
Myfunc = lambda y,t: M.dot(y) + d*t
vFunc = np.vectorize(Myfunc,excluded = ['y'])
y_0 = np.array([1,1,1])
c = np.array([0.5,1,1.5])
print(vFunc(y_0,c))
Теперь это дает мне ошибку:
ValueError: operands could not be broadcast together with shapes (3,) (4,)
И я не знаю почему. Насколько я понял, это должно дать мне три отдельных результата.
Ожидаемый результат будет следующим:
если я вызываю функцию, где c является скаляром, я должен просто получить один вектор:
M.dot(y) + d*scalar
Если я назову его с вектором из трех элементов, я хочу получить список из трех векторов в качестве результата:
M.dot(y) + d*c1
M.dot(y) + d*c2
M.dot(y) + d*c3