Python中Numpy数组相邻元素依次相加的实现方法求助
解决Numpy数组相邻元素依次相加的问题
嘿,刚接触Python和Numpy遇到这种小问题太正常啦,别着急!我给你两种实现思路,从易懂到高效,你可以慢慢理解~
最简洁高效的Numpy原生方法(推荐)
Numpy的切片功能简直是为这种需求量身定做的!核心思路就是把数组分成两部分:除最后一个元素的所有元素和除第一个元素的所有元素,然后直接让这两个切片相加——Numpy会自动帮你把对应位置的元素两两相加,刚好就是相邻元素的和。
举个实际的代码例子:
import numpy as np # 定义你的原始数值数组 my_array = np.array([2, 3, 4, 5, 6]) # 执行相邻元素相加操作 adjacent_sums = my_array[:-1] + my_array[1:] print(adjacent_sums) # 输出结果:[ 5 7 9 11]
简单解释下切片:
my_array[:-1]:取数组中从第一个元素到倒数第二个元素(比如上面的例子里就是[2,3,4,5])my_array[1:]:取数组中从第二个元素到最后一个元素(也就是[3,4,5,6])- 两个切片相加时,Numpy会逐元素对应相加,完美实现你要的“索引i和i+1元素相加”的效果~
适合新手理解的循环方法
如果你想先搞清楚底层逻辑,也可以用Python基础的循环来实现,虽然效率不如Numpy原生方法,但更容易理解:
import numpy as np my_array = np.array([2, 3, 4, 5, 6]) sums_list = [] # 循环遍历到倒数第二个元素(因为要和下一个元素相加) for i in range(len(my_array) - 1): # 把当前元素和下一个元素的和加入列表 sums_list.append(my_array[i] + my_array[i+1]) # 把列表转成Numpy数组(如果需要的话) adjacent_sums = np.array(sums_list) print(adjacent_sums) # 同样输出:[ 5 7 9 11]
小提示
当你的数组规模很大时,一定要用第一种切片相加的方法!Numpy的向量运算比Python普通循环快几十甚至上百倍,这也是Numpy处理数值数据的核心优势~
内容的提问来源于stack exchange,提问作者Robert Strick
相关产品推荐
相关产品推荐

