如何在Google Colab中将TSV/空格分隔文本读取为整型numpy数组
问题原因
你当前使用pd.read_table默认以制表符为分隔符读取内容,而你的文件是用空格分隔数值,所以整行内容会被识别为单个字符串列,最终转换得到的数组元素都是整行字符串,自然无法直接通过dtype=int转换格式。
解决方案
1. 自动获取上传文件名(无需写死路径)
files.upload()返回的结果是字典结构,键为上传文件的实际名称,值为文件二进制内容。你可以直接读取字典的第一个键作为文件名,不需要手动修改代码指定路径:
filename = next(iter(uploaded.keys()))
2. 正确转换为整型numpy数组
两种常用实现方式,按需选择即可:
方式一:无需pandas依赖,直接读取解析
from google.colab import files import numpy as np uploaded = files.upload() filename = next(iter(uploaded.keys())) with open(filename, 'r', encoding='utf-8') as f: # 逐行处理:去除首尾空白、按空格拆分、转整数,跳过空行 arr_list = [list(map(int, line.strip().split())) for line in f if line.strip()] np_arr = np.array(arr_list, dtype=int)
方式二:调整pandas读取参数实现
给read_table指定分隔符为任意空白字符,同时关闭表头识别即可:
from google.colab import files import pandas as pd import numpy as np uploaded = files.upload() filename = next(iter(uploaded.keys())) # sep='\s+' 表示匹配任意长度的空白字符作为分隔符,header=None表示没有表头 data = pd.read_table(filename, sep='\s+', header=None) np_arr = data.to_numpy(dtype=int)
执行完成后得到的np_arr就是你需要的5行4列整型numpy数组。
内容的提问来源于stack exchange,提问作者user1832524
相关产品推荐
相关产品推荐

