Python nach MATLAB: Exportliste von Strings mit scipy.io exportieren
Frage
Ich versuche, eine Liste von Textzeichenfolgen von Python nach Matlab mit scipy.io zu exportieren. Ich möchte scipy.io verwenden, weil meine gewünschte .mat -Datei beide numerischen Matrizen enthalten sollte (was ich gelernt habe hier) und Textzellenarrays.
Ich habe es versucht:
import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})
In MATLAB lade ich test.mat und bekomme ein Zeichenarray:
my_list =
adg
beh
cfi
Wie mache ich scipy.io eine Liste in ein Matlab -Zellen -Array exportieren?
Lösung
Sie müssen my_list zu einem Array von Numpy -Objekten machen:
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})
Dann wird es in einem Zellformat gespeichert. Es könnte eine bessere Möglichkeit geben, es in ein np.object zu bringen, aber ich habe diesen Weg aus dem genommen Scipy -Dokumentation.
Andere Tipps
Es sieht so aus, als ob der Inhalt der Liste ordnungsgemäß exportiert wird, sie werden nur transponiert und in ein Zeichenarray platziert. Sie können es problemlos in das gewünschte Zellarray von Saiten in Matlab umwandeln, indem Sie es umsetzen und verwenden Zellstr, wobei jede Reihe in eine separate Zelle platziert wird:
>> 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'
Zugegeben, das geht nicht umso mehr an Allgemeines Ausgabe des Exportierens von Daten als Zellarray von Python nach Matlab, aber es sollte mit dem helfen Spezifisch Problem, das Sie oben auflisten.