Python к MATLAB: экспорт списка строк с помощью scipy.io

Я пытаюсь экспортировать список текстовых строк от 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 я загружаю test.mat и получаю символьный массив:

my_list =

adg
beh
cfi

Как я заставляю scipy.io экспортировать список в массив ячеек MATLAB?

13
задан Community 23 May 2017 в 10:24
поделиться

2 ответа

Вам нужно сделать 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 .

13
ответ дан 2 December 2019 в 00:31
поделиться

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

>> 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, но это должно помочь с конкретной проблемой, которую вы перечислили выше.

1
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: