我有一些格式为 CSV 的文本文件:
1.3, 0, 1.0
20.0, 3.2, 0
30.5, 5.0, 5.2
这些文件的大小约为 3.5Gb,我无法在有用的时间内将它们中的任何一个读入 Pandas 的内存中。
但我不需要读取所有文件,因为我想做的是从文件中选择一些随机行并读取那里的值,我知道如果文件被格式化,理论上是可以做到的所有字段都具有相同大小的方式 - 例如,二进制文件中的 float16。
现在,我想我可以使用问题答案中指定的 NumPy 方法对其进行转换: How to output list of floats to a binary file in Python
但是,转换完成后如何从中选择随机行?
在普通的文本文件中,我可以这样做:
import random
offset = random.randrange(filesize)
f = open('really_big_file')
f.seek(offset) #go to random position
f.readline() # discard - bound to be partial line
random_line = f.readline() # bingo!
但我找不到一种方法可以在由 NumPy 制作的二进制文件中工作。