如何向numpy数组末尾添加元素并执行左移位操作
实现Numpy数组左移并末尾追加元素
需求说明
拥有一个初始为全零的数组(示例初始状态为[0,0,0]),每次向数组末尾添加新数字时,数组内所有元素向左移位一位,最终效果如下:
初始状态:
zeros=[0,0,0]
第一次迭代(添加1):[0,0,1]
第二次迭代(添加2):[0,1,2]
第三次迭代(添加3):[1,2,3]
第四次迭代(添加4):[2,3,4]
实现方案
核心逻辑是先让数组左移一位,再将新元素赋值到数组末尾,以下是两种可行方法:
方法一:使用numpy.roll函数
np.roll(arr, -1)可快速实现数组向左滚动一位,之后替换最后一位为新元素即可:
import numpy as np # 初始化长度为3的零数组 arr = np.zeros(3, dtype=int) # 第一次添加1 arr = np.roll(arr, -1) arr[-1] = 1 print(arr) # 输出: [0 0 1] # 第二次添加2 arr = np.roll(arr, -1) arr[-1] = 2 print(arr) # 输出: [0 1 2] # 第三次添加3 arr = np.roll(arr, -1) arr[-1] = 3 print(arr) # 输出: [1 2 3] # 第四次添加4 arr = np.roll(arr, -1) arr[-1] = 4 print(arr) # 输出: [2 3 4]
方法二:手动切片赋值
直接通过切片操作完成数组左移,再给最后一位赋值新元素,无需额外函数:
import numpy as np arr = np.zeros(3, dtype=int) # 第一次添加1 arr[:-1] = arr[1:] arr[-1] = 1 print(arr) # 输出: [0 0 1] # 第二次添加2 arr[:-1] = arr[1:] arr[-1] = 2 print(arr) # 输出: [0 1 2] # 第三次添加3 arr[:-1] = arr[1:] arr[-1] = 3 print(arr) # 输出: [1 2 3] # 第四次添加4 arr[:-1] = arr[1:] arr[-1] = 4 print(arr) # 输出: [2 3 4]
补充说明
如果初始数组是形状为(1,4)的二维数组,可先通过arr = arr.flatten()转为一维数组再操作,或调整切片/roll参数适配二维结构,核心逻辑保持一致。
内容的提问来源于stack exchange,提问作者Ramin Bakhtiyari
相关产品推荐
相关产品推荐

