gpt4 book ai didi

python - 计算多个并行数组的最优雅/高效/Pythonic 方法?

转载 作者:行者123 更新时间:2023-11-28 17:38:14 24 4
gpt4 key购买 nike

用于一些计量经济学工作。

在给定(可能)大量并行数据数组的情况下,我经常需要派生多个计算变量的并行数组。

在下面的示例中,我有两个输入数组和两个输出数组,但想象一下在现实世界中可能有 5-10 个输入和输出数组。

w, x 是输入
y, z 是输出

方法一:

w = [1, -2, 5]
x = [0, 3, 2]
N = len(w)
I = range(N)
y = map(lambda i: w[i] + x[i], I)
z = map(lambda i: w[i] - x[i], I)

方法二:

w = [1, -2, 5]
x = [0, 3, 2]
N = len(w)
I = range(N)
y, z = [], []
for i in I:
y.append(w[i] + x[i])
z.append(w[i] - x[i])

方法 C:

w = [1, -2, 5]
x = [0, 3, 2]
y, z = [], []
for w_i, x_i in zip(w, x):
y.append(w_i + x_i)
z.append(w_i - x_i)

方法D:

w = [1, -2, 5]
x = [0, 3, 2]
N = len(w)
I = range(N)
(y, z) = transpose(map(lambda i: [w[i] + x[i], w[i] - x[i]], I))

D 似乎是最简洁、可扩展和高效的。但它也是最难阅读的,尤其是对于许多变量和复杂的公式。

A 是我最喜欢的,有一点重复,但是为每个变量构造一个循环是否效率较低?这不会随着大数据扩展吗?

B vs. C:我知道 C 更像 pythonic,但 B 似乎更方便和简洁,并且可以更好地扩展更多变量。在这两种情况下,我都讨厌必须预先声明变量的额外行。

总的来说,我对上述任何一种方法都不完全满意。我的推理中是否缺少某些东西,或者是否有更好的方法?

最佳答案

使用 numpy ... 在 C++ 中执行操作,因此速度更快 ...(特别是如果我们假设您的数组比 3 个项目大得多)

w = numpy.array([1, -2, 5])
x = numpy.array([0, 3, 2])

y = w+x
z = w-x

关于python - 计算多个并行数组的最优雅/高效/Pythonic 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227545/

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