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

使用np.concatenate合并numpy数组报错,如何得到shape(2,32,32,3)数组?

解决Numpy数组合并成(2,32,32,3)的问题

嘿,我明白你遇到的问题了——直接用np.concatenate合并两个(32,32,3)的数组确实达不到你想要的(2,32,32,3)形状,这是因为concatenate是在已有轴上进行拼接,而你的原始数组只有3个轴,没法直接在第0轴(也就是你想要的新维度)上合并。

为什么会报错?

如果直接执行np.concatenate([A,B], axis=0),得到的会是(64,32,3)的数组(把两个数组在第0轴上首尾拼接);要是你错误指定了一个不存在的轴(比如axis=3),就会触发AxisError,因为原始数组只有0、1、2三个轴。

正确的解决方法

你需要先给每个数组添加一个新的维度(变成(1,32,32,3)),再进行合并;或者直接用更简便的np.stack函数一步到位。

方法1:先扩展维度再用concatenate

先通过np.expand_dims给每个数组增加一个第0轴,再拼接:

import numpy as np

# 假设你的A和B已经是(32,32,3)的数组
A = np.random.rand(32, 32, 3)
B = np.random.rand(32, 32, 3)

# 扩展维度:从(32,32,3)变成(1,32,32,3)
A_expanded = np.expand_dims(A, axis=0)
B_expanded = np.expand_dims(B, axis=0)

# 在第0轴上拼接
result = np.concatenate([A_expanded, B_expanded], axis=0)
print(result.shape)  # 输出: (2, 32, 32, 3)

方法2:直接用np.stack(更推荐)

np.stack会自动帮你添加新维度并完成合并,专门用于这种需要新增维度的拼接场景:

import numpy as np

A = np.random.rand(32, 32, 3)
B = np.random.rand(32, 32, 3)

# 在第0轴上堆叠两个数组
result = np.stack([A, B], axis=0)
print(result.shape)  # 输出: (2, 32, 32, 3)

两种方法都能得到你想要的结果,np.stack更简洁,平时处理这种新增维度的合并我更常用它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:42:59