gpt4 book ai didi

python - 获取 numpy 数组中元素对的总和

转载 作者:太空狗 更新时间:2023-10-29 21:16:11 25 4
gpt4 key购买 nike

我有一个数组:

t = [4, 5, 0, 7, 1, 6, 8, 3, 2, 9]

这只是范围 [0, 9] 的随机洗牌。我需要计算这个:

t2 = [9, 5, 7, 8, 7, 14, 11, 5, 11, 13]

这只是:

t2 = [t[0]+t[1], t[1]+t[2], t[2]+t[3], t[3]+t[4], ..., t[9]+t[0]]

在处理大型数组时,有没有一种方法可以使用 numpy 来避免 python for 循环?

最佳答案

您可以利用 NumPy 数组的按元素求和的能力:

In [5]: import numpy as np

In [6]: t = np.array([4, 5, 0, 7, 1, 6, 8, 3, 2, 9])

In [7]: t + np.r_[t[1:],t[0]]
Out[7]: array([ 9, 5, 7, 8, 7, 14, 11, 5, 11, 13])

np.r_是将序列连接在一起以形成新的 numpy 数组的一种方法。正如我们将在下面看到的,事实证明这不是最好的方法在这种情况下


另一种可能是:

In [10]: t + np.roll(t,-1)
Out[10]: array([ 9, 5, 7, 8, 7, 14, 11, 5, 11, 13])

使用 np.roll 显示明显更快:

In [11]: timeit t + np.roll(t,-1)
100000 loops, best of 3: 17.2 us per loop

In [12]: timeit t + np.r_[t[1:],t[0]]
10000 loops, best of 3: 35.5 us per loop

关于python - 获取 numpy 数组中元素对的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366665/

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