2012-09-11 25 views
0

假設你有一個數據文件,其中包括由字符串分隔的多個數據集 - 按以下格式「」:Python的numpy的:有多個數據集的數據文件

-- 
<x0_val> <y0_val> 
<x1_val> <y1_val> 
<x2_val> <y2_val> 
-- 
<x0_val> <y0_val> 
<x1_val> <y1_val> 
<x2_val> <y2_val> 
... 

你怎麼能看整個文件到一個數組數組,以便您可以將所有數據集之後繪製到同一圖片上,使用for循環遍歷外部數組?

genfromtxt('data.dat', delimiter=("--")) 

給出了大量的

Line #1550 (got 1 columns instead of 2) 
+0

參見: http://stackoverflow.com/questions/3518778/how-to-read-csv-into-record-array-in-numpy – Oz123

+0

參見[其](http://stackoverflow.com/問題/ 12223965 /如何解析塊數據從一個文本文件到一個二維數組在蟒蛇/ 12227618#12227618) –

+0

[你有什麼試過](http:// whathaveyoutried.com)?你可以通過兩個分隔符(第一個'--',然後是'''')來分割。 –

回答

0

我會更新...

我將在第一個文件分割成多個文件,它可以駐留在內存中的對象或文件系統作爲新文件。

您可以通過模塊re找到字符串--

然後你可以使用我上面發佈的鏈接。

+0

有130個數據集。真的分成多個文件嗎? – ritter

+0

@Frank,爲什麼不?只有在記憶中,沒有傷害,如果它是持久的,它會更容易工作。 – Oz123

1

如果你是100%肯定,你在你的文件中沒有負值,你可以嘗試快速:的

np.genfromtxt(your_file, comments="-") 

comments="-"將迫使genfromtxt-後忽略所有的字符,這當然如果你有負面的變數會給出奇怪的結果。此外,結果將只是您的數據集在一個單一的陣列

否則,最安全的路線是迭代你的文件,並存儲在一個列表中不符合--的行,每行:

blocks = [] 
current = [] 
for line in your_file: 
    if line.startswith("-"): 
     blocks.append(np.array(current)) 
     current = [] 
    else: 
     current += line.split() 

如果爲空,您可能必須刪除第一個塊。您可以檢查mmap based solution already posted

+0

這似乎工作。掛在 – ritter

+0

它似乎只讀第一個數據集 – ritter

+0

不,用'commments'它只是結合了所有的數據集,並沒有創建一個陣列數組。 – ritter

相關問題