如何使用numpy在同索引替换元素并将原元素后移至下一位
你当前代码的问题在于第二次调用np.insert时,传入的还是未修改的原始列表empty_arr,而非第一次插入3之后生成的新数组,相当于第一次的插入操作被直接覆盖,所以最终输出里看不到3。
实现方案
方案1:一次性插入多个值(最简洁)
你可以直接给np.insert的第三个参数传入要插入的多个值组成的序列,numpy会按顺序把这些值放在指定的插入位置。如果需要保持最终数组长度为6,可以截取前6位:
import numpy as np empty_arr = [0] * 5 # 在索引1的位置按顺序插入3、4两个元素,截取前6位匹配预期长度 inserted = np.insert(empty_arr, 1, [3,4])[:6] print(inserted) # 输出:[0 3 4 0 0 0]
方案2:分步插入(符合你原本的分步操作逻辑)
如果需要分步插入,第二次插入时要使用第一次插入后得到的新数组作为操作对象,插入位置设为2,最后截取前6位即可:
import numpy as np empty_arr = [0] * 5 # 第一步插入3到索引1的位置,得到长度为6的数组 inserted = np.insert(empty_arr, 1, 3) # 第二步用第一次插入后的inserted作为输入,插入4到索引2的位置,截取前6位 inserted = np.insert(inserted, 2, 4)[:6] print(inserted) # 输出:[0 3 4 0 0 0]
内容的提问来源于stack exchange,提问作者Riri
相关产品推荐
相关产品推荐

