我有一个大小为1505MB的文本文件,包含浮点数据。该文件大约有73000行和1500列。我想将文件内容读入numpy
数组,然后对数组进行分析,但是使用numpy.readtxt
读取文件时,我的计算机变得很慢。如何使用Python最快地将此文件读入数组?
我有一个大小为1505MB的文本文件,包含浮点数据。该文件大约有73000行和1500列。我想将文件内容读入numpy
数组,然后对数组进行分析,但是使用numpy.readtxt
读取文件时,我的计算机变得很慢。如何使用Python最快地将此文件读入数组?
您还可以使用已经优化的pandas读取器:
In [3]: savetxt('data.txt',rand(10000,100))
In [4]: %time u=loadtxt('data.txt')
Wall time: 7.21 s
In [5]: %time u= read_large_txt('data.txt',' ')
Wall time: 3.45 s
In [6]: %time u=pd.read_csv('data.txt',' ',header=None).values
Wall time: 1.41 s
def read_large_txt(path, delimiter=None, dtype=None):
with open(path) as f:
nrows = sum(1 for line in f)
f.seek(0)
ncols = len(f.next().split(delimiter))
out = np.empty((nrows, ncols), dtype=dtype)
f.seek(0)
for i, line in enumerate(f):
out[i] = line.split(delimiter)
return out
line.split
返回一个字符串数组,所以你需要首先将其转换为一维的numpy数组,并指定数据类型。 - user707650
pandas.read_csv
时,我遇到了这个错误pandas.parser.CParserError: Error tokenizing data. C error: out of memory
。 - Dalek