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

如何解包NumPy嵌套数组 将内层array元素展开至外层列表

NumPy嵌套数组解包实现方案

问题说明

现有结构为嵌套NumPy一维数组的序列,每个子项第一个值为元素字符串,第二个值为存储3个浮点数值的NumPy数组,需要将内层数组的元素直接展开到外层子列表中,取消嵌套结构。

原始结构示例:

a=[['Sb' array([4.24035696, 2.44817292, 7.41858935])]
 ['I' array([2.08076032, 3.69501392, 5.37518666])]
 ['I' array([6.35173963, 1.22916823, 8.9947238 ])]
 ['I' array([ 4.24036048, -0.04551256,  5.37518684])]
 ['I' array([4.24035383, 4.88618543, 8.99472472])]
 ['I' array([6.3999514 , 3.69501663, 5.37518685])]
 ['I' array([2.12897688, 1.22916548, 8.99472467])]]

目标结构:

a=[['Sb' 4.24035696 2.44817292 7.41858935]
 ...
 ['I' 2.12897688 1.22916548 8.99472467]]

最简实现

直接使用Python原生解包运算符*配合列表推导式即可完成,不需要额外调用复杂的NumPy API,代码简洁且执行效率高:

import numpy as np

# 补全合法语法的原始数据定义
a = [
    ['Sb', np.array([4.24035696, 2.44817292, 7.41858935])],
    ['I', np.array([2.08076032, 3.69501392, 5.37518666])],
    ['I', np.array([6.35173963, 1.22916823, 8.9947238 ])],
    ['I', np.array([ 4.24036048, -0.04551256,  5.37518684])],
    ['I', np.array([4.24035383, 4.88618543, 8.99472472])],
    ['I', np.array([6.3999514 , 3.69501663, 5.37518685])],
    ['I', np.array([2.12897688, 1.22916548, 8.99472467])]
]

# 一行代码完成解包
a_unpacked = [[elem, *coords] for elem, coords in a]

适配object类型NumPy数组的版本

如果原始变量a是dtype=object的NumPy数组而非原生Python列表,用下面的写法可以直接输出同类型的NumPy数组结果:

a_unpacked = np.array([[row[0], *row[1]] for row in a], dtype=object)

结果验证

执行代码后打印第一个子项,可以看到结构完全符合预期:

print(a_unpacked[0])
# 输出: ['Sb', 4.24035696, 2.44817292, 7.41858935]

说明:NumPy数组本身支持迭代解包,不需要提前调用.tolist()转换为Python列表,直接用*拆包即可拿到所有内部元素。


内容的提问来源于stack exchange,提问作者Rogério Gouvêa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:48:16