2
我的文件看起来如下,其中每行的前3个数字表示的事物三角形/三重,和第4号是每个三角形标记:快速将一个非常大的数字字符串列表到ndarray
import numpy as np
file = open(fname, 'r')
lines = [x for x in file.readlines() if not x.startswith('#')]
n = ... # number of lines to read
tri = np.empty([n, 3], dtype=int) # array of triplets
tri_mark = np.empty([n], dtype=int) # a marker for each triplet
for i in range(n):
s = lines[i].split()
tri[i, :] = [int(v) for v in s[ : -1]]
tri_mark[i] = int(s[-1])
当行数进入千家万户,事实证明,for循环是一个令人难以置信的瓶颈:
1 2 3 1
5 6 7 0
300 10 11 5
0 14 15 9
我现在如下读它。我观察到一个我也使用的外部程序可以很快读取文件,所以我认为应该可以更快地读取和转换。
有没有办法更快地将字符串列表转换为ndarray
?
(转换为二进制文件目前不是一个选项。)