有没有一个有效的函数来计算乘积?

2024-10-06 20:36:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个numpy函数(或任何其他包中的函数),它可以有效地计算

enter image description here

是向量值输入的向量值函数。乘积被认为是一个简单的分量乘法。你知道吗

这里的问题是,每个x向量的长度和要相乘的结果向量(f,ofx)的总数(N)都非常大,大约有数百万个。因此,不可能一次生成所有结果(它不适合内存),然后使用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))

一个向量值函数,其输出的维数等于其输入的维数。你知道吗

可以肯定的是:我不是在寻找等价的代码,而是寻找一个单一的、高度优化的函数。有这样的事吗?你知道吗

对于那些熟悉Wolfram Mathematica的人来说:它相当于Product。在Mathematica中,我可以简单地编写Product[f[i ConstantArray[1,1000000]],{i,1000000}]。你知道吗


Tags: 函数代码numpynponesprodproduct向量
1条回答
网友
1楼 · 发布于 2024-10-06 20:36:37

Numpyufuncs都有一个^{}方法。^{}是一个ufunc。所以这是一条单行线:

np.multiply.reduce(v)

其中v是以同样有效的方式计算的值向量。你知道吗

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

v = f(x)

以你为例:

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

备选方案

表达同一事物的更简单方法是^{}

np.prod(v)

也可以直接在向量上使用^{}方法:

v.prod()

相关问题 更多 >