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

Python中如何将含numpy数组的嵌套列表转为普通列表?解决tolist报错

解决嵌套列表中numpy数组转普通列表的问题

错误原因

你犯了个基础错误:tolist()是numpy数组的专属方法,而B11是Python原生的嵌套列表,直接给它调用这个方法自然会报AttributeError。

解决方案

因为你的数据是嵌套结构,需要遍历每一层元素,遇到numpy数组就调用tolist()转成普通列表,遇到子列表就继续遍历。这里提供两种实现方式:

方式1:递归处理(通用,支持任意嵌套层数)

import numpy as np

B11=[[np.array([353.856161,   0.      ,   0.      ]), 
      np.array([  0.      ,   0.      , 282.754301,   0.      ])], 
     [np.array([  0.      , 294.983702, 126.991664])]]

def numpy_list_converter(obj):
    # 如果是numpy数组,转成普通列表
    if isinstance(obj, np.ndarray):
        return obj.tolist()
    # 如果是列表,递归处理每个元素
    elif isinstance(obj, list):
        return [numpy_list_converter(item) for item in obj]
    # 其他类型直接返回
    else:
        return obj

C11 = numpy_list_converter(B11)
print(C11)

方式2:嵌套列表推导式(适合固定层数的嵌套)

如果确定你的列表只有两层嵌套,可以直接用两层列表推导式:

C11 = [[arr.tolist() for arr in sublist] for sublist in B11]

输出结果

运行后得到的C11就是你期望的格式:

[[[353.856161, 0.0, 0.0], [0.0, 0.0, 282.754301, 0.0]], [0.0, 294.983702, 126.991664]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:45:38