我有两个自变量f(x,y)的Python函数,该函数返回一个标量。我也有两个np.array可能的参数,xsys。我想计算一个形状为(xs.size, ys.size)的二维numpy数组,该数组包含在从fxs提取的参数的所有组合中求值的ys值。结果应等于

np.array([[f(x,y) for y in ys] for x in xs])


我想尽可能有效地实现这一点,并从多个处理器内核中受益。 f没有任何副作用。我尝试使用numpy.vectorize,但未能成功使用它。例如。 numpy.outer完全符合我对f=operator.__mul__特殊情况的要求。

作为附加的警告,尽管可能不立即相关,但数组之一(例如ys)不包含数字,而是包含scipy.interpolate.interp1d返回的对象。函数f通过这些插值的scipy.integrate.quad计算定积分。所得矩阵仍只包含数字。

最佳答案

假设f是python函数,请将numpy.frompyfunc().outer()一起使用

np.frompyfunc(f, 2, 1).outer(xs, ys)

关于python - 获取功能评估的所有组合的矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35607453/

10-11 18:30