繁体   English   中英

从文本文件创建numpy数组的最快方法

[英]Fastest way to create a numpy array from text file

我有很多行的60mb文件。

每行具有以下格式:

(x,y)

每行将被解析为形状(1,2)的numpy向量。

最后,应在shpae(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

可以提高速度的一件事是模仿genfromtxt并在列表(或元组)列表中累积每一行。 然后在末尾执行一个np.array

例如(大致):

points = []
for line in file:
    x,y = eval(line)
    points.append((x,y))
result = np.array(points)

由于您的文件行看起来像元组,因此我将保留您的eval分析。 我们通常不建议使用eval ,但是在这种有限的情况下,它可能是最简单的。

您可以尝试让genfromtxt读取此内容,但是每行上的()都会让人有些头疼。

pandas应该有一个更快的csv阅读器,但是我不知道它是否可以配置为现在或现在使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM