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

如何将形状为(629,5)和(629,6)的两个2D数组转换为(629,5,6)的3D数组?

如何将形状为(629,5)和(629,6)的二维数组转为(629,5,6)的三维数组?

需求说明

需要把两个二维数组转换为指定形状的三维数组:

  • 数组1:形状 (629, 5)
  • 数组2:形状 (629, 6)
  • 目标数组:形状 (629, 5, 6),其中目标数组的第i个元素是由数组2的第i行重复5次组成的二维数组。

输入示例

# 形状(3,5)的数组
arr1 = [
 [2, 5, 6, 7, 8],
 [3, 5, 6, 7, 8],
 [4, 5, 6, 7, 8]
]

# 形状(3,6)的数组
arr2 = [
 [2, 5, 6, 7, 8, 9],
 [3, 5, 6, 7, 8, 9],
 [4, 5, 6, 7, 8, 9]
]

期望输出示例(形状(3,5,6))

[
 [[2, 5, 6, 7, 8, 9], [2, 5, 6, 7, 8, 9], [2, 5, 6, 7, 8, 9], [2, 5, 6, 7, 8, 9], [2, 5, 6, 7, 8, 9]], 
 [[3, 5, 6, 7, 8, 9], [3, 5, 6, 7, 8, 9], [3, 5, 6, 7, 8, 9], [3, 5, 6, 7, 8, 9], [3, 5, 6, 7, 8, 9]], 
 [[4, 5, 6, 7, 8, 9], [4, 5, 6, 7, 8, 9], [4, 5, 6, 7, 8, 9], [4, 5, 6, 7, 8, 9], [4, 5, 6, 7, 8, 9]]
]

解决方案

基于NumPy的高效实现(推荐)

NumPy的维度操作和广播特性可以快速完成转换,适合大数据量场景:

  1. 导入NumPy并转换输入为数组:
import numpy as np

arr1_np = np.array(arr1)
arr2_np = np.array(arr2)
  1. 方法一:使用np.repeat直接重复行
    将数组2扩展为(629,1,6)的形状,然后在第二个维度重复5次:
result = np.repeat(arr2_np[:, np.newaxis, :], arr1_np.shape[1], axis=1)
  1. 方法二:使用广播(内存更高效)
    无需实际复制数据,通过广播直接生成目标形状的数组:
result = np.broadcast_to(arr2_np[:, None, :], (arr1_np.shape[0], arr1_np.shape[1], arr2_np.shape[1]))
  1. 验证结果形状:
print(result.shape)  # 输出 (629, 5, 6)

纯Python实现(适合小数据量)

如果不依赖NumPy,可以用列表推导式完成:

result = []
for row in arr2:
    # 把当前行重复5次,组成三维数组的一行
    result.append([row.copy() for _ in range(5)])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:02:29