2010-06-25 139 views
1

今天,當我嘗試在Octave中放置一個腳本時,我想,這在python中可能更容易。事實上,列表的數學運算符很容易,但以格式加載文件並不容易。然後我想,這可能是,我只是不熟悉模塊做到這一點!Python中的數學 - 將數據文件轉換爲矩陣

所以,我有一個典型的數據文件,有四列數字。我想將每列加載到單獨的列表中。有沒有一個模塊可以讓我更容易?

+0

謝謝!有人知道在OSX上獲得Numpy嗎?我從macports選擇py26-numpy,但它似乎是下載python 2.6,我已經有,所以我可能已經搞砸了這種方法... – lollygagger 2010-06-25 21:10:23

回答

1

我不知道這是否適用於您的問題,但您可以使用numpy,特別是其loadtxtsavetxt函數嘗試。您應該只使用numpy數組,並避免使用Python列表,因爲它們不適合數值計算。

1

如果你正在處理二維數據或極長的列表,Numpy是要走的路,但如果你不想做非常高級的數學,你可以用普通的Python來解決。

>>> table = [] 
>>> a = "32 42 63 1123" 
>>> table.append(a.split(" ")) # this would be some loop where you file.readline()... 
>>> table.append(a.split(" ")) 
>>> table.append(a.split(" ")) 
>>> table.append(a.split(" ")) 
>>> table 
[['32', '42', '63', '1123'], ['32', '42', '63', '1123'], 
['32', '42', '63', '1123'], ['32', '42', '63', '1123']] 
>>> zip(*table) # this "transposes" the list of lists 
[('32', '32', '32', '32'), ('42', '42', '42', '42'), 
('63', '63', '63', '63'), ('1123', '1123', '1123', '1123')] 
>>> 
+0

謝謝,這當然是一個有用的方法,我想要的許多其他事情做。 – lollygagger 2010-06-25 21:18:42

0

讓Numpy工作的最簡單方法是下載Enthought Python Distribution。這對於Mac來說尤其如此,因爲從頭開始安裝numpy,scipy ......會帶給你很大的努力。

用於加載和保存一些文件,如:

# This is some comment 
1 2 3 
4 5 6 
7 8 9 

你做

import numpy as np 
data = np.loadtxt(input_filename, comment='#') 
+0

!!我不想花200塊錢購買免費的東西!有沒有其他方法可以做到這一點?顯然numpy已經在我的機器上,但是當我嘗試使用它時,我會遇到各種奇怪的錯誤。 – lollygagger 2010-06-28 16:05:25

+0

我想你不是在學術界,不能利用他們的免費32位的Mac的優勢。你可以用你在機器上使用numpy時遇到的詳細錯誤來創建另一個問題嗎? – 2010-07-01 21:10:17