Использование SciPy и MATLAB, мне трудно восстановить массив, чтобы он соответствовал тому, что задается из массива ячеек MATLAB, загружаемого с помощью scipy.io.loadmat().ndim в массиве numpy, загруженном scipy.io.loadmat?
Например, скажем, создать ячейку, содержащую пару двойных массивов в 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 для синтаксического анализа файла журнала и сборки этих массивов ячеек onsets, поэтому я хотел бы иметь возможность создавать их с нуля.
Когда я пытаюсь построить тот же массив из отпечатка, я получаю другую форму обратно:
>>> 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, но было бы неплохо выяснить, что происходит, и немного добавить к моему [minuscule] знанию numpy.
Вернулся к этому снова; scipy.io теперь имеет очень полезную ссылку для этого: http://docs.scipy.org/doc/scipy/reference/tutorial/io.html –