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

Python中如何将多个NumPy数组合并为形状(1,7,2)的单个数组

NumPy拼接子数组得到形状(1,7,2)数组的实现方案

需求梳理

  • 操作环境:Python + NumPy
  • 输入:B1[0,0]到B1[0,6]共7个长度为2的一维NumPy数组
  • 输出要求:按原有顺序拼接为单个数组B,形状必须为(1,7,2),结构与给定的期望输出完全一致

现有代码补全

你给出的初始化代码缺少B1的容器定义,直接运行会触发名称错误,补全后可运行的初始化代码如下:

import numpy as np

# 初始化存储子数组的容器
B1 = np.empty((1, 7), dtype=object)
B1[0,0] = np.array([0,1])
B1[0,1] = np.array([1,3])
B1[0,2] = np.array([2,5])
B1[0,3] = np.array([3,4])
B1[0,4] = np.array([4,7])
B1[0,5] = np.array([5,6])
B1[0,6] = np.array([6,7])

实现代码

两种常用实现方式都可以得到符合要求的结果:

方式1:列表转换+维度扩展(写法最简洁)

直接取出B1第一维的所有子数组转为普通列表,再转成NumPy数组后在最外层新增一个维度即可:

B = np.array(B1[0].tolist())[np.newaxis, :, :]

方式2:堆叠后调整维度

用np.stack沿第0轴堆叠所有子数组成(7,2)形状的二维数组,再在外层新增维度:

B = np.stack(B1[0], axis=0)[np.newaxis, ...]

结果验证

执行上述代码后打印B和B.shape,可以得到完全匹配预期的输出:

>>> print(B)
[[[0 1]
  [1 3]
  [2 5]
  [3 4]
  [4 7]
  [5 6]
  [6 7]]]
>>> print(B.shape)
(1, 7, 2)

避坑提示

  • 不要直接用np.concatenate拼接所有子数组,该操作会把7个长度为2的数组合并为一个长度14的一维数组,无法得到目标三维结构
  • 如果不需要保留B1的object数组结构,更高效的写法是初始化时直接按(1,7,2)的形状赋值,省去后续拼接步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:33:20