【问题标题】:Evaluate array valued function python 3评估数组值函数python 3
【发布时间】:2019-06-03 10:08:22
【问题描述】:

我需要整合一个矩阵函数,如下例所示:

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

a1a2a3w 是大小相同的数组(a 是样本点,w 是权重)

这是最优化的方式吗?

【问题讨论】:

  • 如果你要去zipf,那么从数组开始是没有意义的。列表中的zip 更快。但是zip 循环只是np.dot(w, f)

标签: python-3.x numpy numpy-ndarray numpy-ufunc


【解决方案1】:

特别是对于这个函数,您可以对所有内容进行矢量化。

I = w@np.vstack([a1,a1+a2,a3]).T

不过,一般来说isn't fast to apply a python function over a numpy array

【讨论】:

  • 好的,但该功能只是一个示例。真正的函数要复杂得多,并且具有 NxM 维度。
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 2016-08-14
相关资源
最近更新 更多