Warum kann ich nicht die Form dieses numpy Arrays bekommen?

Ich importiere eine Matlab-Datei mit scipy.io und versuche, ihre Dimensionen zu finden. Es scheint, obwohl die Datei in Python geladen wird, ist es nicht in der Lage, die Dimensionen zu geben. Warum das? Und wie kann man das beheben?

 >>> import scipy.io >>> pref_mat = scipy.io.loadmat('pref_mat_loc.mat') >>> R=pref_mat >>> import numpy >>> R=numpy.array(R) >>> len(R) 0 >>> R # We see that the first line of the file is getting printed, means the file has been loaded. array({'pref_mat': array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0]], dtype=uint16), '__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Mon May 08 23:42:05 2017', '__version__': '1.0', '__globals__': []}, dtype=object) >>> len(R.shape) # But it appears here as though R is empty 0 >>> R.shape # As does here () 

One Solution collect form web for “Warum kann ich nicht die Form dieses numpy Arrays bekommen?”

pref_mat , zurückgegeben von loadmat ist ein Wörterbuch. Du hast es in ein Array eingehüllt, R Ich kann den Inhalt von pref_mat als den {} Teil von R ableiten:

 {'pref_mat': array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0]], dtype=uint16), '__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Mon May 08 23:42:05 2017', '__version__': '1.0', '__globals__': []} 

Also das Array, das Sie interessiert sind, ist

 R = pref_mat['pref_mat'] 

Das R sollte die Form und dtype haben, die du willst. Obwohl in der zusammenfassenden Ansicht sehe ich nur 0.

Wenn das MATLAB Zellen oder Strukturen gespeichert hat, würde das Verschachteln von "Objekt" Typ Arrays komplizierter werden.

  • Generierung der 3D-Gaußschen Verteilung in Python
  • Größe des NumPy Arrays
  • Wie bekomme ich die gleichen "speziellen" Lösungen für unterbestimmte lineare Systeme, die Matlabs `A \ b` (mldivide) Operator mit numpy / scipy zurückgibt?
  • Numpy-Äquivalent von MATLABs Zell-Array
  • Array Division - Übersetzen von MATLAB zu Python
  • Äquivalent von Matlab 'ismember' in numpy (Python)?
  • Warum gibt es numpy std () ein anderes Ergebnis zu matlab std ()?
  • Getting ein Gitter einer Matrix über logische Indexierung in Numpy
  • Wie effektiv entpacken Speicher in Python?
  • Zuweisen von Spalten in NumPy?
  • Open Source Alternative zu MATLABs fmincon Funktion?
  • Python ist die beste Programmiersprache der Welt.