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
?
(轉換爲二進制文件目前不是一個選項。)