当前位置: 代码迷 >> python >> 是否有有效的功能来计算产品?
  详细解决方案

是否有有效的功能来计算产品?

热度:69   发布时间:2023-06-19 09:26:23.0

我正在寻找一个能够有效评估的numpy函数(或来自任何其他软件包的函数)

f是向量值输入x的向量值函数。 该产品被认为是一个简单的组件乘法。

这里的问题是每个x向量的长度和要乘以( N )的结果向量的总数( fx )非常大,大约为数百万。 因此,不可能一次产生所有结果(它不适合存储器),然后使用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的人 :它将等同于 。 Mathematica中 ,我可以简单地编写Product[f[i ConstantArray[1,1000000]],{i,1000000}]

Numpy 都有一个方法。 是一个 。 所以这是一个单行:

np.multiply.reduce(v)

其中v是您希望以同样有效的方式计算的值的向量。

要计算向量,只需将函数应用于输入:

v = f(x)

以你的例子为例:

np.multiply.reduce(np.sin(x))

替代

是一种更简单的表达相同内容的 :

np.prod(v)

您也可以直接在矢量上使用方法:

v.prod()
  相关解决方案