我有一个有两个参数的 Python 函数,f(x,y)
,它返回一个标量。我还有两个可能的参数 np.array
,xs
和 ys
。我想计算一个形状为 (xs.size, ys.size)
的二维 numpy 数组,它保存在所有参数组合下计算的 f
值xs
和 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/