Python to matlab: экспорт списка строк с использованием scipy.io

StackOverflow https://stackoverflow.com/questions/2433924

Вопрос

Я пытаюсь экспортировать список текстовых строк из Python в Matlab с помощью scipy.io. Я хотел бы использовать scipy.io, потому что мой желаемый файл .mat должен включать обе числовые матрицы (которые я научился делать здесь) и массивы текстовых ячеек.

Я старался:

import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})

В Matlab я загружаю тест. Mat и получаю массив символов:

my_list =

adg
beh
cfi

Как сделать Scipy.io экспортировать список в массив клеток Matlab?

Это было полезно?

Решение

Вам нужно сделать my_list массивом объектов Numpy:

import scipy.io
import numpy as np
my_list = np.zeros((3,), dtype=np.object)
my_list[:] = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})

Тогда он будет сохранен в формате ячейки. Может быть лучший способ поместить его в np.object, но я взял это из Документация Scipy.

Другие советы

Похоже, содержимое списка экспортируется должным образом, они просто транспонируются и помещаются в массив символов. Вы можете легко преобразовать его в желаемую массиву клеток струн в Matlab, транспонируя его и используя Мобильный, который помещает каждый ряд в отдельную ячейку:

>> my_list = ['adg';'beh';'cfi'];  %# Your example
>> my_list = cellstr(my_list')    %'# A 3-by-1 cell array of strings

my_list = 

    'abc'
    'def'
    'ghi'

Конечно, это не касается больше Генеральная Проблема экспорта данных в качестве массива ячеек из Python в Matlab, но это должно помочь с специфический Проблема, которую вы перечисляете выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top