gpt4 book ai didi

python - 如何有效地按元素评估整个 Python 函数列表?

转载 作者:行者123 更新时间:2023-12-04 17:44:31 25 4
gpt4 key购买 nike

假设我有一个包含三个函数的列表:

f_list = [f1,f2,f3]

和一个值数组,其中应评估每个函数

values = numpy.array([1,2,3])

这样我得到 f1(1)、f2(2) 和 f3(3)。

一种方法当然是循环函数:

for i in range(3):
print(f_list[i](values[i])

有没有更有效的方法来做到这一点?类似于 numpy 数组操作,我可以一次传递所有值以获得函数评估数组?据我所知,我不能将函数存储在 numpy 数组中,可以吗?

在我的例子中,我有一个非常大的 scipy 插值 (interp1d) 函数(或调用对象)的二维列表,在两个轴上循环时需要很长时间来评估。

最佳答案

对于任意 Python 函数,Python 级别的循环是不可避免的。一种方法是通过列表理解:

f_list = [f1,f2,f3]
values = np.array([1,2,3])
res = np.array([func(val) for func, val in zip(f_list, values)])

请记住,NumPy 不是将普通函数转换为向量化函数的高阶函数工具。连np.vectorize只不过是一个 Python 级别的循环。要对您的计算进行矢量化,您需要依次考虑每个函数并编写一些逻辑(如果确实可以进行矢量化的话)。

关于python - 如何有效地按元素评估整个 Python 函数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52740724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com