我想对向量中的每一行应用一个函数。即使在下面这样一个简单的例子中,我也无法让它工作。
我做了一个函数,取两个向量,并对它们应用点积。
import numpy as np
def func(x,y):
return np.dot(x,y)
y=np.array([0, 1, 2])
x=np.array([0, 1, 2])
print(func(x,y))
当然,输出是5。现在我想插入多个向量x,并得到每个向量的解。我不想使用for循环,所以我尝试使用vectorize函数。例如,下面我定义X=(x1,x2,x3),并希望输出unc(X,y)=(unc(x1,y),unc(x2,y),unc(x3,y))。为什么下面的代码不这样做:
import numpy as np
def func(x,y):
return np.dot(x,y)
y=np.array([0, 1 , 2])
X=np.array([[0,0,0], [1,1,1], [2,2,2]])
vfunc=np.vectorize(func)
print(vfunc(X,y))
1条答案
按热度按时间q35jwt9p1#
要做的第一个技巧是排除y 参数(它是 x 中所有行的固定值)。
第二个窍门是传递签名:两个参数都是数组,结果是标量。
因此,要对函数进行矢量化,请运行:
然后,当调用
vfunc(X,y)
时,将得到: