在Python中,将TXT文件转换为数值数组的方法主要有以下两种方式,具体选择取决于数据格式和需求:
一、使用numpy
库的loadtxt
函数(推荐)
适用于数据以固定分隔符(如空格、逗号)分隔的常规数值文件。
示例代码:
import numpy as np
# 读取以空格分隔的数值文件
data = np.loadtxt('data.txt', dtype=np.float32)
print(data)
# 读取以逗号分隔的数值文件
data = np.loadtxt('data.txt', delimiter=',')
print(data.shape)
优势:
-
简洁高效,支持指定数据类型和分隔符
-
自动处理缺失值和异常数据
二、自定义函数逐行处理(灵活适用)
适用于数据格式不固定或需要额外处理的场景。
示例代码:
import numpy as np
def file2array(path, delimiter=','):
with open(path, 'r', encoding='utf-8') as fp:
string = fp.read()
row_list = string.splitlines()
data_list = [list(map(float, row.strip().split(delimiter))) for row in row_list]
return np.array(data_list)
data = file2array('./data.txt')
print(data)
print("data's shape", data.shape)
优势:
-
可自定义分隔符(如制表符)
-
支持数据清洗(如去除空行、转换数据类型)
三、处理特殊格式(如SRT文件)
若需处理非数值或特殊格式的TXT文件(如SRT字幕文件),需针对性解析。
示例代码:
result = []
with open(r'E:\HISI\darknet-master\build\darknet\x64\data\train5bottle.names', 'r') as f:
for line in f:
result.append(line.strip().split(','))
print(result)
说明:
-
该代码适用于提取每行第一个以逗号分隔的字段(如角度值)
-
strip()
去除首尾空白字符,split(',')
按逗号分割
总结
-
常规数值文件 :优先使用
numpy.loadtxt
,简洁且高效 -
自定义需求 :编写自定义函数,灵活处理分隔符和数据清洗
-
特殊格式文件 :需针对性解析(如SRT文件)