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

关于numpy.insert函数在二维数组中插入逻辑与参数的疑问

理解numpy.insert在二维数组中的工作机制

我来帮你拆解一下这个函数的参数逻辑和两个示例的差异,你就能明白其中的行为了:

核心参数解析

首先明确numpy.insert(arr, obj, values, axis=None)里几个关键参数的含义:

  • obj参数:这是你指定插入位置的参数。当指定axis后,它表示在对应轴的某个索引位置之前插入值。如果obj是一个列表(比如你第一个例子里的[2,2]),就意味着要在这些位置分别执行一次插入操作。
  • values参数:要插入的内容,必须和原数组在axis指定的维度上匹配长度——比如axis=1(列轴)时,values的长度要和原数组的行数一致;axis=0(行轴)时,要和原数组的列数一致。
  • axis参数:axis=1表示沿列方向操作(横向插入),axis=0表示沿行方向操作(纵向插入)。

第一个示例拆解

原数组s的结构是:

import numpy as np
s = np.array([[1,2,3],[2,3,4]])
print(s)
# 输出:
# [[1 2 3]
#  [2 3 4]]

执行t = np.insert(s, [2,2], [0,1], axis=1)时:

  1. obj=[2,2]表示要在列索引2的位置连续插入两次(每次插入都在当前数组的列2之前);
  2. values=[0,1]是长度为2的列表,刚好匹配原数组的2行,所以每次插入的是一行0和一行1;
  3. 第一次插入后,数组变成:
    [[1 2 0 3]
     [2 3 1 4]]
    
    第二次再在新数组的列2位置插入[0,1],最终得到:
    [[1 2 0 0 3]
     [2 3 1 1 4]]
    

第二个示例拆解

原数组a和s完全相同,执行b = np.insert(a, 2, [0,1], axis=1)时:

  • obj=2是单个索引,只在列索引2的位置插入一次[0,1],所以最终结果就是第一次插入后的数组:
    [[1 2 0 3]
     [2 3 1 4]]
    

简单来说,第一个例子里的[2,2]就是告诉numpy“在列2的位置插两次”,而第二个例子只插一次,这就是两者行为差异的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:39:52