[英]Fastest way to get elements from a numpy array and create a new numpy array
[英]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.