我试图执行一个矩阵向量积,并将一个标量乘以一个常量向量。我想用向量上的四个不同的权重来做这个,所以我试着把函数向量化。现在我得到了冲突的维度。 代码如下:
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
如果我用c作为三个元素的向量来调用它,我想要一个三个向量的列表作为结果:
M.dot(y) + d*c1
M.dot(y) + d*c2
M.dot(y) + d*c3
M.dot(y_0) + d*c
应该会给出预期的结果。你知道吗我相信你的意思是:
相关问题 更多 >
编程相关推荐