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

NumPy如何简便实现不同维度数组的拼接追加操作

NumPy三维数组无拆分拼接方案

已定义数组信息

  • 基础三维数组np3,形状为(2, 3, 5),创建代码:
import numpy as np
np1 = np.array(range(2*3*5))
np3 = np1.reshape(2,3,5)

数组结构:

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]]

 [[15 16 17 18 19]
  [20 21 22 23 24]
  [25 26 27 28 29]]]
  • 待拼接数组np_55,形状为(3, 1),创建代码:
np_55 = np.full((3,1),55)

数组结构:

[[55]
 [55]]

目标需求

拼接两个数组得到形状为(2, 3, 6)的目标数组,结构如下:

[[[ 0  1  2  3  4 55]
  [ 5  6  7  8  9 55]
  [10 11 12 13 14 55]]

 [[15 16 17 18 19 55]
  [20 21 22 23 24 55]
  [25 26 27 28 29 55]]]

原有硬编码方案需要手动拆分np3第0轴的两个子块,分别拼接后再合并,无法适配第0轴长度变化的场景,操作冗余。

最简实现代码

直接利用NumPy广播机制,无需拆分数组,一行代码即可完成拼接:

ANSWER = np.concatenate([np3, np_55[np.newaxis, :, :]], axis=2)

代码逻辑说明:
np_55[np.newaxis, :, :] 会在原数组最外层新增一个长度为1的维度,将np_55的形状从(3,1)转换为(1,3,1)。拼接时NumPy会自动将这个形状为(1,3,1)的数组广播为(2,3,1),和np3的前两个维度长度完全匹配,沿最后一个维度(axis=2)拼接后直接得到目标形状的数组。
如果习惯用np.append接口,也可以写成更简洁的形式:

ANSWER = np.append(np3, np_55[None, :, :], axis=2)

其中None和np.newaxis的作用完全等价。该方案不需要循环、不需要手动索引子数组,只要待拼接数组和原数组除了拼接轴之外的维度满足广播规则,都可以直接用这个方法批量拼接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.19 16:15:45