今天,當我嘗試在Octave中放置一個腳本時,我想,這在python中可能更容易。事實上,列表的數學運算符很容易,但以格式加載文件並不容易。然後我想,這可能是,我只是不熟悉模塊做到這一點!Python中的數學 - 將數據文件轉換爲矩陣
所以,我有一個典型的數據文件,有四列數字。我想將每列加載到單獨的列表中。有沒有一個模塊可以讓我更容易?
今天,當我嘗試在Octave中放置一個腳本時,我想,這在python中可能更容易。事實上,列表的數學運算符很容易,但以格式加載文件並不容易。然後我想,這可能是,我只是不熟悉模塊做到這一點!Python中的數學 - 將數據文件轉換爲矩陣
所以,我有一個典型的數據文件,有四列數字。我想將每列加載到單獨的列表中。有沒有一個模塊可以讓我更容易?
我不知道這是否適用於您的問題,但您可以使用numpy
,特別是其loadtxt
和savetxt
函數嘗試。您應該只使用numpy
數組,並避免使用Python列表,因爲它們不適合數值計算。
對於矩陣快速計算,您應該嘗試Numpy,它有一些功能load data from files。
如果你正在處理二維數據或極長的列表,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')]
>>>
謝謝,這當然是一個有用的方法,我想要的許多其他事情做。 – lollygagger 2010-06-25 21:18:42
讓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='#')
!!我不想花200塊錢購買免費的東西!有沒有其他方法可以做到這一點?顯然numpy已經在我的機器上,但是當我嘗試使用它時,我會遇到各種奇怪的錯誤。 – lollygagger 2010-06-28 16:05:25
我想你不是在學術界,不能利用他們的免費32位的Mac的優勢。你可以用你在機器上使用numpy時遇到的詳細錯誤來創建另一個問題嗎? – 2010-07-01 21:10:17
謝謝!有人知道在OSX上獲得Numpy嗎?我從macports選擇py26-numpy,但它似乎是下載python 2.6,我已經有,所以我可能已經搞砸了這種方法... – lollygagger 2010-06-25 21:10:23