在python中添加数组中的元素

时间:2018-02-14 16:14:49

标签: python arrays numpy

我有一个数字的numpy数组,我想互相添加。

例如,如果数组是:

my_list =np.array([2,3,4,5,6]). 

我想添加3到2(索引1到0)和4到3(索引2到1),依此类推。

任何有关这方面的帮助或想法都会很棒,因为我对python和编码很新,而且相当困难。

2 个答案:

答案 0 :(得分:1)

一种方法是使用itertools recipe pairwise

from itertools import tee

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

nums = [2, 3, 4, 5, 6]
sums = [a + b for a, b in pairwise(nums)]
print(sums)
# [5, 7, 9, 11]

另一种方法是使用内置的zip

sums = [a + b for a, b in zip(nums, nums[1:])]

最后,根据@StefanPochmann的评论中的要求,如果您使用的是numpy

import numpy as np
nums = np.array([2, 3, 4, 5, 6])
sums = nums[:-1] + nums[1:]

至于速度,numpy解决方案基本上是无与伦比的,只要您的输入数组已经是numpy.array。如果没有,那么将其转换为数组,zippairwise一样快。使用Python 3.6.3进行测试。

测试输入:

import random
x = [random.sample(range(1000), n) for n in range(1, 1000, 50)]

enter image description here

最后,numpy也有O(n)行为(请注意,数组的长度比之前多100个),其常数正好低一些:

enter image description here

答案 1 :(得分:0)

这是一个解决方案:

nums = [2,3,4,5,6]
sums = []


for i in range(0, len(nums)):
    if(i!=0):
        sums.append(nums[i] + nums[i-1])

print(sums)

输出:

[5, 7, 9, 11]