我有一个大小为60MB的文件,里面有很多行。
每一行的格式如下:
(x,y)
每一行都将被解析为形状为(1,2)的numpy向量。
最终应该将它们连接成一个形状为(N,2)的大型numpy数组,其中N是行数。
如何才能以最快的速度完成这个任务?因为现在花费的时间太长了(超过30分钟)。
我的代码:
with open(fname) as f:
for line in f:
point = parse_vector_string_to_array(line)
if points is None:
points = point
else:
points = np.vstack((points, point))
解析器的位置:
def parse_vector_string_to_array(string):
x, y =eval(string)
array = np.array([[x, y]])
return array
points = np.vstack((points, point))
。这会导致每添加一行就复制一次points
。相反,将points
定义为Python列表,并向其中添加元素。在读完文件之前不要将其转换为NumPy数组。 - Warren Weckesser