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

NumPy使用np.insert一次性插入数组多个元素报错解决方法

错误原因

你的报错核心是np.insert传参不符合函数定义规则:

  1. np.insert的标准参数顺序是np.insert(arr, obj, values, axis=None),不支持把多个插入位置、多个插入值拆成独立位置参数依次传入。
  2. 你写的np.insert(B, 2, B1,8,B2,axis=1)中,前三个位置参数分别对应arr=B、obj=2、values=B1,第四个位置参数8会被识别为传给axis的值,后面又用关键字形式传了axis=1,等于给axis参数重复传值,直接触发类型错误。
  3. 即使不触发重复传参错误,你把第二个插入位置8、第二个插入值B2直接堆在参数列表里的写法,函数也无法识别为“多位置插入”的参数。
修改方法

一次性多位置插入只需要遵循两个规则:

  • 把所有要插入的索引整理成列表传给obj参数:注意索引是相对于原始数组计算的,你需要在原axis=1轴的索引2位置插10,在数组末尾(原数组axis=1长度为7,末尾插入位置就是索引7)插20,所以obj传[2,7]
  • 把所有要插入的值整理成和数组维度匹配的结构传给values参数,保证插入值数量和插入位置数量一一对应
  • 最后通过关键字参数指定axis=1即可

修改后的可运行代码如下:

import numpy as np

B = np.array([[[0.678731133],
        [1.244425627],
        [0.767884084],
        [2.006154222],
        [3.073758392],
        [1.037728999],
        [5.032947535]]])
# 插入值整理为匹配维度的格式,形状为(1,2,1)和原数组在axis=0、axis=2维度对齐
insert_vals = np.array([[[10], [20]]])
# 插入位置对应[原索引2位置, 数组末尾位置]
B3 = np.insert(B, [2, 7], insert_vals, axis=1)

print("B3=", B3)
print("B3 shape=", B3.shape)

运行后输出完全符合预期:

B3= [[[ 0.67873113]
  [ 1.24442563]
  [10.        ]
  [ 0.76788408]
  [ 2.00615422]
  [ 3.07375839]
  [ 1.037729  ]
  [ 5.03294754]
  [20.        ]]]
B3 shape= (1, 9, 1)

注:如果插入位置顺序有调整,只需要同步调整obj里的索引列表和values里值的对应顺序即可,numpy会自动处理插入后的索引偏移,不需要手动计算插入后的位置。

内容的提问来源于stack exchange,提问作者Wiz123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:21:09