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

Python:如何将两个(50,50,3)数组拼接为(2,50,50,3)维度数组?

解决Numpy数组拼接成批量图像维度的问题

嘿,我来帮你搞定这个数组拼接的问题!你的需求是把两个形状为(50,50,3)的图像数组,拼成维度为(2,50,50,3)的批量数组(其中2代表两张图像),核心问题就是先给每个数组新增一个维度,让它们的维度结构匹配后再进行拼接。下面给你几种实用的方法:

方法一:用np.expand_dims新增维度后拼接

先通过np.expand_dims给每个数组在第0位新增一个维度,把(50,50,3)转换成(1,50,50,3),再用np.concatenate沿着第0轴拼接:

import numpy as np

# 假设你的两个图像数组是cat01和cat02
cat01_expanded = np.expand_dims(cat01, axis=0)  # 形状变为(1,50,50,3)
cat02_expanded = np.expand_dims(cat02, axis=0)

# 沿着第0轴拼接,得到目标形状
result = np.concatenate((cat01_expanded, cat02_expanded), axis=0)

方法二:用np.newaxis快速新增维度

这是更简洁的写法,用np.newaxis直接在数组索引中插入新维度,配合...保留原有所有维度:

result = np.concatenate((cat01[np.newaxis, ...], cat02[np.newaxis, ...]), axis=0)

这里的...等价于:,:,:,用来简化多维数组的索引写法。

方法三:用np.stack一步到位(最推荐)

np.stack方法会自动帮你完成「新增维度+拼接」的操作,直接把两个数组在指定轴上堆叠,一步得到目标形状:

result = np.stack((cat01, cat02), axis=0)

执行后result的形状就是你想要的(2,50,50,3),非常省心!

为什么之前的拼接没得到预期结果?

你之前直接用np.concatenate时,两个数组都是3维的:

  • axis=0是沿着第一个维度(图像高度)拼接,所以把50+50变成100,得到(100,50,3);
  • axis=1是沿着第二个维度(图像宽度)拼接,得到(50,100,3)。
    只有先把数组变成4维,让它们的结构是(1,50,50,3),再沿着第0轴拼接,才能把两个1合并成2,得到批量图像的维度结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:25