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

如何用Python合并动态多维列表元素生成目标新数组

动态维度多维子项数组合并实现

需求描述

  • 目标:将列表中包含的多维子项合并为新数组,支持任意动态维度的输入
  • 二维场景示例:
    • 输入:[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]
    • 输出:[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]]
  • 兼容更高维度的[1, 2, ...]嵌套结构处理

现有问题代码

import numpy as np

regular_list = []
regular_list.append([[[-0.1905   , -0.4675   ],[-0.573    , -0.8115   ]], [[-0.468    , -0.3585   ],[-0.8145   , -0.7735   ]], [[-0.356    , -0.1435   ],[-0.7645   , -0.5415   ]]])
regular_list.append([[[-0.145     , 0.52      ],[-0.065     , 0.195     ]], [[-0.535     , 0.405     ],[-0.05      , 0.285     ]], [[-0.39      , 0.375     ],[-0.275     , 0.26      ]]])
regular_list.append([[[-0.2445    , 0.1275    ],[-0.229    , -0.147    ]], [[-0.117    , -0.043    ],[-0.151    , -0.046    ]], [[0.03      , 0.0245    ],[0.047    , 0.049    ]]])
  
flat_list = [i for i in regular_list]

print('Original list', regular_list)
print('Transformed list', flat_list)

当前错误输出

[[[[-0.1905, -0.4675], [-0.573, -0.8115]], [[-0.468, -0.3585], [-0.8145, -0.7735]], [[-0.356, -0.1435], [-0.7645, -0.5415]]],
 [[[-0.145, 0.52], [-0.065, 0.195]], [[-0.535, 0.405], [-0.05, 0.285]], [[-0.39, 0.375], [-0.275, 0.26]]],
 [[[-0.2445, 0.1275], [-0.229, -0.147]], [[-0.117, -0.043], [-0.151, -0.046]], [[0.03, 0.0245], [0.047, 0.049]]]]

期望输出

[[[[-0.1905, -0.4675], [-0.573, -0.8115]], [[-0.468, -0.3585], [-0.8145, -0.7735]], [[-0.356, -0.1435], [-0.7645, -0.5415]]],
 [[-0.145, 0.52], [-0.065, 0.195]], [[-0.535, 0.405], [-0.05, 0.285]], [[-0.39, 0.375], [-0.275, 0.26]],
 [[-0.2445, 0.1275], [-0.229, -0.147]], [[-0.117, -0.043], [-0.151, -0.046]], [[0.03, 0.0245], [0.047, 0.049]]]

问题原因

现有列表推导仅遍历复制了最外层列表结构,没有展开后续外层元素的子项,无法达到合并效果。

适配动态维度的实现方案

方案1:纯Python实现(无第三方依赖)

不需要预先判断数组维度,保留第一个子项完整结构,后续外层元素直接展开子项追加即可,适配任意嵌套层级:

def merge_multi_dim(input_list):
    if not input_list:
        return []
    result = [input_list[0]]
    for block in input_list[1:]:
        result.extend(block)
    return result

# 调用方式
flat_list = merge_multi_dim(regular_list)

方案2:Numpy实现(适合数值计算场景)

通过指定第0轴拼接自动对齐维度,适合后续需要做数值运算的场景:

import numpy as np
# 首个元素新增一维保证拼接轴对齐
flat_list = np.concatenate(
    [regular_list[0][np.newaxis, ...], *regular_list[1:]],
    axis=0
).tolist()

两种方案输出结果完全匹配预期,且对输入数组的维度无固定要求,支持任意层级的嵌套结构输入。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:06:25