【发布时间】:2020-09-30 05:55:47
【问题描述】:
我有一个包含一些数据的文本文件。
#this is a sample file
# data can be used for practice
total number = 5
t=1
dx= 10 10
dy= 10 10
dz= 10 10
1 0.1 0.2 0.3
2 0.3 0.4 0.1
3 0.5 0.6 0.9
4 0.9 0.7 0.6
5 0.4 0.2 0.1
t=2
dx= 10 10
dy= 10 10
dz= 10 10
1 0.11 0.25 0.32
2 0.31 0.44 0.12
3 0.51 0.63 0.92
4 0.92 0.72 0.63
5 0.43 0.21 0.14
t=3
dx= 10 10
dy= 10 10
dz= 10 10
1 0.21 0.15 0.32
2 0.41 0.34 0.12
3 0.21 0.43 0.92
4 0.12 0.62 0.63
5 0.33 0.51 0.14
我的目标是读取文件,找出列值为 1 和 5 的行并将它们存储为多维数组。就像 1 一样,它将是 a1=[[0.1, 0.2, 0.3],[0.11, 0.25, 0.32],[0.21, 0.15, 0.32]],对于 5,它将是 a5=[[0.4, 0.2, 0.1],[0.43, 0.21, 0.14],[0.33, 0.51, 0.14]]。
这是我写的代码,
import numpy as np
with open("position.txt","r") as data:
lines = data.read().split(sep='\n')
a1 = []
a5 = []
for line in lines:
if(line.startswith('1')):
a1.append(list(map(float, line.split()[1:])))
elif (line.startswith('5')):
a5.append(list(map(float, line.split()[1:])))
a1=np.array(a1)
a5=np.array(a5)
我的代码与我上传的示例文件完美配合,但在实际情况下,我的文件相当大 (2gb)。用我的代码处理它会引发内存错误。我该如何解决这个问题?我的工作站中有 96GB。
【问题讨论】:
-
this question 的最佳答案的第二条评论对您有帮助吗?
-
@DavidWierichs 是的,这有帮助。实际上我已经这样做了,但整个事情仍然很慢。下面的答案相当有效率。
标签: python-3.x numpy sorting error-handling