在用python做机器学习的时候,有时候训练或测试数据特别大,一个文件就有几个G,如何高效读取,不使机器内存爆炸呢,以我自己的工作经历来说,读取一个特别大的二进制文件来做测试,有几个G的大小,但每次只测batch size =100个样本。这样可以使用迭代器:
import numpy as np
def data_read(file_path):
with open(file_path,'rb') as f:
wile True:
data_labels = f.read(100*4*(1+500))
if data_labels:
data_labels = np.frombuffer(data_labels,dtype=np.float32)
yield data_labels
return
def test(data_labels):
data_labels = np.reshape(data_labels,(-1,501))
datas = data_labels[:,1:]
labels = data_labels[:,0]
preds = model(datas)
......
for data_labels in data_read(file_path):
.....
output=test(data_labels)
以上就是使用流程,可以根据自己业务需求进行修秘诀
在用python做机器学习的时候,有时候训练或测试数据特别大,一个文件就有几个G,如何高效读取,不使机器内存爆炸呢,以我自己的工作经历来说,读取一个特别大的二进制文件来做测试,有几个G的大小,但每次只测batch size =100个样本。这样可以使用迭代器:import numpy as np#我们读的是保存浮点数的二进制文件 test_data.dat ,由连续的1+500=label+d...
最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法。
我们谈到“文本处理”时,我们通常是指处理的内容。Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法...
今天有个朋友问了我一个问题,如何使用Python读取大文件?觉得这个问题挺有意思的,就记录下来。
大部分时间我们处理小文件的时候(1g以内?),可以直接用f.read()或readlines()直接把全部内容读取到内存里面来。但当文件非常大,比如10g,100g的时候,文件的大小一般已经超出了机器的内存大小,就没法直接按小文件的方式处理了。那应该怎么办呢?
首先,选一个文件做演示,就用上一篇博客的...
python中大数据文件读取
python中经常会遇到读取大文件的场景。文件较小时,我通常采用下面方法,readlines(),该方法会一次性读取文件的所有行,并将其放入list中,最后存入内存中。可想而知,当文件较大是,内存占用会非常高,甚至造成内存溢出,进程被系统kill掉。
# 读取方式一
with open(file_path, 'r+', encoding='utf-8') as f:
count = 0
for line in f.readlines():
细节1:python3.x版本判断读取到文件尾需要用if not a: 不能用if a == "":
细节2:fopen.read(4) 一次读4个字节,使用struct.unpack('<I',a)[0]转换成unsigned int类型的值
1.1 struct.pack(fmt,v1,v2,.....)
将v1,v2等参数的值进行一层包装,包装的方法由fmt指定。被包装的参数必须严格符合fmt。最后返回一个包装后的字符串。
1.2 s...