使用SciPy和MATLAB,我很難重建一個數組以匹配使用scipy.io.loadmat()加載的MATLAB單元格數組中給出的數組。在numpy數組中加載了scipy.io.loadmat的ndim?
舉例來說,假設我創建包含一對在MATLAB雙陣列的細胞,然後使用scipy.io加載它(我使用SPM做成像與pynifti等結合分析)
MATLAB
>> onsets{1} = [0 30 60 90]
>> onsets{2} = [15 45 75 105]
的Python
>>> import scipy.io as scio
>>> mat = scio.loadmat('onsets.mat')
>>> mat['onsets'][0]
array([[[ 0 30 60 90]], [[ 15 45 75 105]]], dtype=object)
>>> mat['onsets'][0].shape
(2,)
我的問題是:爲什麼這個numpy的陣列具有的形狀(2),而不是(2,1,4)?在現實生活中,我試圖用Python來解析日誌文件並構建這些起始單元陣列,所以我希望能夠從頭開始構建它們。
當我嘗試從打印輸出建立相同的數組,得到了一個不同的形狀回:
>>> new_onsets = array([[[ 0, 30, 60, 90]], [[ 15, 45, 75, 105]]], dtype=object)
array([[[0, 30, 60, 90]],
[[15, 45, 75, 105]]], dtype=object)
>>> new_onsets.shape
(2,1,4)
不幸的是,該形狀(在單元陣列雙打的向量)在一個規範被編碼的上游,所以我需要能夠以這種格式完全保存。當然,這不是什麼大問題,因爲我可以在MATLAB中編寫解析器,但是很容易弄清楚發生了什麼,併爲我的[小] numpy知識添加一點點。
再次回到這裏; scipy.io現在有一個非常有用的參考資料:http://docs.scipy.org/doc/scipy/reference/tutorial/io.html –