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

Python numpy拼接3个(1,9,2)多维数组报错如何解决

错误产生原因

np.append的函数定义为numpy.append(arr, values, axis=None),仅支持传入2个数组作为位置参数完成拼接:

  • 第一个位置参数是基础数组arr
  • 第二个位置参数是待追加的数组values
  • 第三个位置参数本身就是axis参数的固定传参位

代码中把I1、I2、I3三个数组都作为位置参数传入时,第三个参数I3会被识别为传给axis的位置值,后面又显式传入axis=0关键字参数,等于给axis参数重复传值,因此抛出类型错误。
就算去掉显式的axis=0参数,直接调用np.append(I1,I2,I3)也无法实现三个数组的拼接,因为I3会被当成axis的输入值,出现参数类型不匹配的报错。

正确实现方法

要得到形状为(3,9,2)的拼接结果,有两种常用实现方案:

  • 方案1:使用np.concatenate(推荐,性能最优,原生支持多数组拼接)
    np.concatenate专门用于沿现有轴拼接多个数组,直接将所有待拼接数组放入列表/元组作为第一个参数传入即可,完整代码如下:
import numpy as np

I1 = np.array([[[0, 2],
        [2, 3],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 1],
        [4, 7],
        [5, 6],
        [6, 7]]])

I2 = np.array([[[1, 1],
        [2, 3],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 1],
        [4, 7],
        [5, 6],
        [6, 7]]])

I3 = np.array([[[2, 2],
        [2, 3],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 1],
        [4, 7],
        [5, 6],
        [6, 7]]])

I = np.concatenate([I1, I2, I3], axis=0)

运行后打印I.shape可验证输出为(3, 9, 2),完全符合预期。

  • 方案2:嵌套调用np.append(不推荐,多数组拼接时写法冗余,性能差)
    如果一定要用np.append,需要嵌套调用,每次仅传入2个数组完成拼接,再把拼接结果和下一个数组继续拼接,核心代码如下:
I = np.append(np.append(I1, I2, axis=0), I3, axis=0)

该写法运行后也能得到形状正确的结果,但拼接数组越多嵌套层级越深,可读性和执行效率都低于np.concatenate方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:10