2013-10-24 93 views
1

我最近跳出了矩陣實驗室窗口,我試圖讓Python/Numpy/Scipy去做MatLab中我曾經做過的事情。到目前爲止似乎非常好,但我正在努力的一件事是找到類似於MatLab中數據結構的東西。Python模擬MatLab數據結構

我想寫一個通用代碼,用於讀取.xml文件,並根據它們是字符串,標量還是矩陣自動將變量分配到數據結構中。一個典型的XML文件將被分拆這樣的:

<material> 
<id> 
1 
<\id> 
<E> 
17e4 
<\E> 
<var 2> 
'C:\data file path' 
<\var 2> 
<var 3> 
[1 2;3 4] 
<\var 3> 
<\material> 
<material> 
<id> 
2 
<\id> 
<var 1> 
17e4 
<\var 1> 
<var 2> 
'C:\data file path' 
<\var 2> 
<var 3> 
[1 2;3 4] 
<\var 3> 
<\material> 
... 
etc 

在Matlab中我就已經創建了一個數據結構是這樣的:

Materials.1.E=17e4 
Materials.1.var2='C:\data file path' 
Materials.1.var3=[1 2;3 4] 
Materials.2.E=17e4 
Materials.2.var2='C:\data file path' 
Materials.2.var3=[1 2;3 4] 

如果在Python列表可以是2D(所以我可以擁有一行中每種材料的所有變量),或者字典可能具有多個圖層或可能包含他們將是完美的列表,但我現在找不到我想要的東西!

任何幫助將不勝感激!

+4

你爲什麼不能在Python字典的名單? – Shai

+0

看看[這篇文章](http://stackoverflow.com/questions/1912434/how-do-i-parse-xml-in-python)關於使用Python解析XML可能是有用的。此外,如果您正在使用Python數據分析堆棧,那麼我高度推薦使用[iPython](http://ipython.org/)和[pandas](http:// pandas .pydata.org /)。您可以將它們作爲Continuum Analytics [Anaconda](http://store.continuum.io)Python分發的一部分。 – jeremiahbuddha

回答

6

正如Shai所建議的,你可以使用一個字典列表。爲了您的例子,這會是這個樣子:

Materials = [] 

Materials.append({'E': 17e4, 'var2': 'C:\\data file path', 'var3': [1, 2, 3, 4]}) 
Materials.append({'E': 17e4, 'var2': 'C:\data file path', 'var3':[1, 2,3, 4]}) 

print Materials[0]['var2'] 

它打印:

C:\data file path 
+0

感謝Molly,那正是我需要的。我從這樣做的書中沒有什麼可以做到的,但我知道信息高速公路會爲我而來! –