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

时间:2016-02-24 16:21:37

标签: python numpy parallel-processing

我有两个参数的Python函数f(x,y),它返回一个标量。我还有两个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计算定积分。生成的矩阵仍然只包含数字。

1 个答案:

答案 0 :(得分:1)

假设f是python函数,请将.outer()np.frompyfunc(f, 2, 1).outer(xs, ys)

一起使用
es = Elasticsearch({'host': 'localhost', 'port': 9200})
res = es.index(index='data-client_dev', doc_type='test', id=2, body={'author': 'Christophe'}, timeout=60)
print(res['created'])