python - 获取函数评估的所有组合的矩阵

标签 python numpy parallel-processing

我有一个有两个参数的 Python 函数,f(x,y),它返回一个标量。我还有两个可能的参数 np.arrayxsys。我想计算一个形状为 (xs.size, ys.size) 的二维 numpy 数组,它保存在所有参数组合下计算的 fxsys。结果应该等于

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/

相关文章:

python - 添加列不同长度的 Pandas

Python:使用另一个数组的元素作为键对数组进行排序?

.net - loopstate.Break()、loopState.Stop() 和 CancellationTokenSource.Cancel() 之间有什么区别

异步MPI主从模型

python - Pyplot,将2个数据集绘制成一张图,跳过部分y轴

python - 如何在 Pandas 系列中选择包含多个值的特定行?

python - Clojure 与 Numpy 中的矩阵乘法

pandas - Pandas 两列之间的时差

python - 使用 pip freeze 安装 numpy

c - 如何使用不同的线程使用openmp安全地更新C结构