До тех пор, пока в R2016b MATLAB не имел строку типа данных, но хранил строки как символьные векторы , и именно так большинство кода MATLAB по-прежнему пишется. Поэтому loadmat
обоснованно предполагает, что n -мерный массив символов из MATLAB должен интерпретироваться как n-1 -мерный массив строк.
Если вам действительно нужен массив в Python, где каждый элемент представляет собой один символ, его легко конвертировать с использованием списочных представлений:
>>> a = numpy.array([ ['hot'],['foo'],['pie'] ])
array([['hot'],
['foo'],
['pie']],
dtype='<U3')
>>> numpy.array([[c for c in w[0]] for w in a])
array([['h', 'o', 't'],
['f', 'o', 'o'],
['p', 'i', 'e']],
dtype='<U1')