我有一個由'數據塊'組成的文件,其中頭文件指出文件中有多少個塊以及每個塊中有多少行。如何使用numpy讀取文件的不同部分或塊
# mydata.dat
3 12343 2
# comment
12343
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
12343
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
12343
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
我想單獨存儲每個塊。我所做的是通過分割行來生成每個塊的列表,然後將其轉換爲數組以存儲在字典中。
import numpy as np
with open('mydata.dat', "r") as f:
lines = f. readlines()
blocks, _, n = map(int, lines[1].split())
del lines[:3]
data = {i: np.array(dtype=float,
object=[line.split()
for line in lines[i * n + 1: n * (i + 1)]])
for i in xrange(blocks)}
我覺得應該有一個更好的(更「有效」)的方式來直接解析文本塊中的數據,像np.loadtxt
在那裏你可以跳過行的定期量(如切片),並不僅僅是從文件開始。
謝謝,已經嘗試過他們,他們的工作。儘管如此,手工分割和使用'np.array'似乎比'np.loadtxt'或'np.split'更快,你知道這是爲什麼嗎? – izxle
較少的開銷?正如我試圖描述的那樣,'loadtxt'對編譯代碼沒有什麼特別之處。 'pandas'有一個更快的'csv'加載器。 – hpaulj