我有以下代码:
def obj(f, pis, rs):
out = np.zeros(f.size)
for pi, r in zip(pis, rs):
out += r * pi / (1 + np.dot(r, f))
return out
p = np.array([0.42, 0.08, 0.42, 0.08])
r = np.array([[-1.0, 7.0, -1.0, 0.4],
[-1.0, 7.0, 0.5, -1.0],
[0.2, -1.0, -1.0, 0.4],
[0.2, -1.0, 0.5, -1.0]
])
f = np.array([0.25, 0.25, 0.25, 0.25])
我想把这个函数矢量化. 为什么下面的实现没有提供相同的输出:
def obj_vec(f, pis, rs):
out = rs * pis / (1 + np.dot(r, f))
return np.sum(out, axis=1)
应该如何定义obj_vec()
呢?