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

如何将含缺失值的TSV文件读取为numpy浮点型数组?

解决TSV文件转浮点型NumPy二维数组(含缺失值)的问题

你遇到的问题根源在于使用了names=True参数——这个参数会让np.genfromtxt返回结构化数组(1维,每个元素对应一行数据,包含所有列的字段),而不是你预期的二维浮点数组。下面给你两种通用的解决方案,兼顾缺失值处理:

方案1:直接读取为二维浮点数组(最简便)

如果不需要保留列名,直接跳过表头,指定浮点类型即可,缺失值会被自动转为nan(NumPy处理缺失值的标准方式):

import numpy as np

# 跳过第一行列名,按制表符分割,读取为二维浮点数组
data = np.genfromtxt("file.tsv", delimiter="\t", skip_header=1, dtype=np.float64)

如果你的文件里有自定义缺失值标记(比如NA、N/A或者空字符串),可以手动指定并替换:

data = np.genfromtxt(
    "file.tsv",
    delimiter="\t",
    skip_header=1,
    dtype=np.float64,
    missing_values=['NA', 'N/A', ''],  # 定义哪些字符串算缺失值
    filling_values=np.nan  # 将缺失值替换为nan
)

方案2:保留列名同时转为二维数组

如果需要保留列名信息,先读取结构化数组,再转换为普通二维数组:

import numpy as np

# 读取带列名的结构化数组
structured_data = np.genfromtxt("file.tsv", delimiter="\t", names=True, dtype=np.float64)
# 将结构化数组转为二维浮点数组
data = structured_data.view(np.float64).reshape(structured_data.shape[0], -1)

# 可以通过structured_data.dtype.names获取列名列表
column_names = structured_data.dtype.names

补充说明

你之前写的自定义转换器converter(x)其实没必要——只要指定dtype=np.float64,np.genfromtxt会自动将合法的浮点字符串转为数值,遇到缺失值则转为nan,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:34:20