Вы можете сделать это, используя только scipy.io.loadmat
. Но вы должны быть осторожны из-за некоторых различий в форматах.
from scipy import io
import numpy as np
C = io.loadmat('test.mat')
print type(C)
print C.keys()
Выходы:
<type 'dict'>
['C', '__version__', '__header__', '__globals__']
Таким образом, вы можете видеть, что scipy
является inlcuding кучу больше информации, что мы делаем на самом деле не нужно, но мы можем видеть вашу клетку C.
C = C['C']
print type(C)
Ouputs:
<type 'numpy.ndarray'>
Ока y, так что у меня есть Cell из Matlab.
print C.shape
: Выходы
(1, 81)
что не совсем верно, но с немного обработки мы можем получить его так, как вы хотите.
C = np.squeeze(C)
X = np.empty((C.shape[0], C[0].shape[0], C[0].shape[1]))
for i in xrange(X.shape[0]):
X[i] = C[i]
print X.shape
Выходов:
(81, 30, 30)
Вуаля, у нас есть своя ячейка в numpy
массиве. Как и в случае прямого предупреждения, вообще scikit-learn
принимает 2D-массив как входной, а не трехмерный массив.
необходимо изменить форму массива ячеек на матрицу, а затем https://stackoverflow.com/questions/37620330/import-tensor-with-mat-format-to-tensorflow – GameOfThrows
Я бы предложил вам посмотреть на этот другой вопрос тоже: http://stackoverflow.com/questions/1761419/numpy-equivalent-of-matlabs-cell-array – Eskapp