You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:36:31