我正在使用python w/scipy包來讀取MatLab文件。在Python中讀取MatLab文件w/scipy
但是它需要很長的時間和崩潰。
的Dataset的大小約爲50〜MB
有沒有什麼更好的方法來讀取數據,並形成邊緣列表?
我的Python代碼
import scipy.io as io
data=io.loadmat('realitymining.mat')
print data
我正在使用python w/scipy包來讀取MatLab文件。在Python中讀取MatLab文件w/scipy
但是它需要很長的時間和崩潰。
的Dataset的大小約爲50〜MB
有沒有什麼更好的方法來讀取數據,並形成邊緣列表?
我的Python代碼
import scipy.io as io
data=io.loadmat('realitymining.mat')
print data
我可以解壓縮後加載它。但它正在延伸記憶。
當我試着使用octave
加載它,我得到:
octave:1> load realitymining.mat
error: memory exhausted or requested size too large for range of Octave's index type -- trying to return to prompt
在IPython中
In [10]: data.keys()
Out[10]: ['network', 's', '__version__', '__header__', '__globals__']
In [14]: data['__header__']
Out[14]: 'MATLAB 5.0 MAT-file, Platform: MACI, Created on: Tue Sep 29 20:13:23 2009'
In [15]: data['s'].shape
Out[15]: (1, 106)
In [17]: data['s'].dtype
Out[17]: dtype([('comm', 'O'), ('charge', 'O'), ('active', 'O'), ('logtimes', 'O'),...
('my_intros', 'O'), ('home_nights', 'O'), ('comm_local', 'O'), ('data_mat', 'O')])
# 58 fields
In [24]: data['s']['comm'][0,1].shape
Out[24]: (1, 30)
In [31]: data['s']['comm'][0,1][0,1]
Out[31]: ([[732338.8737731482]], [[355]], [[-1]], [u'Packet Data'], [u'Outgoing'],
[[40]], [[nan]])
In [33]: data['s']['comm'][0,1]['date']
Out[33]:
array([[array([[ 732338.86915509]]), array([[ 732338.87377315]]),
...
array([[ 732340.48579861]]), array([[ 732340.52778935]])]], dtype=object)
看那件。只需嘗試print data
或print data['s']
時間太長。顯然,它的結構太大,無法快速格式化。要實際得到這些數據,我建議在Python或Matlab中加載一次,然後將有用的部分保存到一個或多個文件中。
也許你可以在結構中首先使用他的部分數據作爲network
,我已經用MATLAB解壓縮了它here。
仍在研究如何整理其餘更大的結構。
你可以只保存結構的各個領域在不同的文本文件,如:
save('friends.txt', '-struct', 'network', 'friends', '-ascii')
和蟒蛇
friends = numpy.loadtxt('friends.txt')
它加載立即分裝每個文件。
什麼錯誤信息? – Daniel
沒有錯誤。只需要很多時間。 –
你的問題說「它崩潰」。 – Daniel