我正在寻找一个
numpy
函数(或来自任何其他包的函数),它可以高效地评估。
其中f是一个向量值函数,其输入为向量x。乘积被视作简单的分量乘法。
问题在于每个x向量的长度以及要相乘的结果向量总数(x的f)都非常大,数量级达到了百万级别。因此,无法一次性生成所有结果(它们无法适配内存),然后再使用np.multiply.reduce
等方法进行乘法计算。
一种需要替换的代码的示例如下:
import numpy as np
x = np.ones(1000000)
prod = f(x)
for i in range(2, 1000000):
prod *= f(i * np.ones(1000000))
假设 f
是一个向量值函数,其输出的维度等于输入的维度。
确切地说:我不是在寻找等效的代码,而是要一种高度优化的单个函数。有这样的东西吗?
对于那些熟悉 Wolfram Mathematica 的人:它将相当于 Product。在 Mathematica 中,我只需编写 Product[f[i ConstantArray[1,1000000]],{i,1000000}]
。
x
进行f(x)
操作吗?或者f
只能处理标量值?你的示例np.sin(x)
可以处理数组输入。而另一种选择math.sin(x)
只能处理标量。 - hpauljmap
表达式仅适用于Py2。 - hpaulj