我需要集成一个矩阵函数,如下例所示:
def func(a1, a2, a3):
return np.array([a1, (a1 + a2), a3])
执行此操作的无效方法是使用三个for循环。虽然,我想提高效率。我考虑过使用“地图”,例如:
def integral(func, a1, a2, a3, w):
f = np.array(list(map(func, a1, a2, a3)))
I = np.zeros((3, ))
for fi, wi in zip(f, w):
I = I + wi*np.array(fi)
return I
a1
,a2
,a3
和w
是相同大小的数组(a是采样点,w是权重)
这是最优化的方法吗?
答案 0 :(得分:1)
特别是对于此功能,您可以将所有内容矢量化。
I = w@np.vstack([a1,a1+a2,a3]).T
但是,一般来说,isn't fast to apply a python function over a numpy array。