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

如何将字符串格式的科学计数法数值列表转换为float或int类型

是否由科学计数法导致字符串类型

不是。
你从CSV列中读取到的内容本身就是以字符串形式存储的类数组格式文本,和内容中的e-xx科学计数法标识无关。Python原生支持直接转换科学计数法格式的字符串为浮点数,比如float("3.94912873e-04")可正常返回对应浮点值,不会触发类型异常。

字符串转数值的实现方法

以下是Python环境下的两种常用可行方案:

方案1:基于ast模块安全转换为列表

该方法无额外第三方依赖,转换过程安全无代码注入风险:

import ast

# 替换为你从CSV读取到的原始字符串
raw_str = """[[1.01782362e-05 1.93798303e-04 7.96163586e-05 5.08812627e-06
  1.39600188e-05 3.94912873e-04 2.33748418e-04 1.22856018e-05]]"""

# 先移除换行符,再把数值之间的空格替换为逗号,适配Python列表语法
processed_str = raw_str.replace("\n", " ").replace(" ", ",")
# 转换为二维浮点列表
float_list = ast.literal_eval(processed_str)

方案2:直接转换为Numpy数组

如果后续需要做数值计算,可直接用Numpy方法转换,步骤更简洁:

import numpy as np

raw_str = """[[1.01782362e-05 1.93798303e-04 7.96163586e-05 5.08812627e-06
  1.39600188e-05 3.94912873e-04 2.33748418e-04 1.22856018e-05]]"""

# 移除所有括号,提取数值部分
num_part = raw_str.strip("[]")
# 读取数值并调整为原二维数组形状
float_arr = np.fromstring(num_part, sep=" ").reshape(1, -1)

转整数的注意事项

  • 原内容所有数值均小于1,直接转换为整数会默认取整为0
  • 如有整数存储需求,建议先按需要的精度乘以对应倍率后再转,比如要保留6位小数精度:
    # 基于numpy数组转换示例
    int_arr = (float_arr * 1e6).astype(int)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:06:02