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

Python如何将X_train嵌套列表内所有原生float转换为numpy.float64

问题描述

我有一个X_train对象,共包含16个列表,每个子列表内存储了1个numpy数组,以及若干原生Python float或numpy.float64类型的变量,需要将每个子列表内的所有原生float类型统一转换为numpy.float64类型。
相关数据结构参考截图:
X_train内部结构
单个子列表内部结构

最初编写的实现代码未达到预期效果:

for mylists in X_train:
    for x in mylists:
        if type(x) is np.ndarray:  # 跳过子列表内的数组
            print(' numpy array')
        elif isinstance(x, float):
            float(x) # 尝试将原生float转换为float64
        else:
            print('Not even a float')
失效原因

代码没有生效的核心问题有两个:

  • float(x)的作用是将输入转换为原生Python float类型并返回计算结果,既没有转成numpy.float64,也没有把结果写回原列表,属于无效操作
  • 遍历列表时拿到的x是临时变量,直接对x赋值不会修改原列表存储的元素,必须通过索引定位到元素位置做替换,修改才能真正生效
修正后代码

通过索引遍历子列表元素,原地替换符合条件的原生float即可:

import numpy as np

for sub_list in X_train:
    # 同时拿到元素索引和值
    for idx, item in enumerate(sub_list):
        # 跳过numpy数组元素
        if isinstance(item, np.ndarray):
            continue
        # 精准匹配原生Python float类型,避免重复转换已有的numpy.float64
        if type(item) is float:
            sub_list[idx] = np.float64(item)

提示:如果后续需要兼容其他float衍生类型的转换,可以把类型判断条件替换为isinstance(item, float) and not isinstance(item, np.floating),逻辑更严谨。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:12:23