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.

  • Was ist die Python / Numpy Äquivalent von num2cell ()?
  • Was ist das Äquivalent von MATLABs Repmat in NumPy
  • Wie bekomme ich die gleichen "speziellen" Lösungen für unterbestimmte lineare Systeme, die Matlabs `A \ b` (mldivide) Operator mit numpy / scipy zurückgibt?
  • Komplexe matlabähnliche Datenstruktur in Python (numpy / scipy)
  • Implementierung von MATLAB zu Python ohne Iterationen
  • MATLAB ind2sub Äquivalent in Python
  • Generierung der 3D-Gaußschen Verteilung in Python
  • Numpy läuft mit der halben Geschwindigkeit von MATLAB
  • Größe des NumPy Arrays
  • Scipy LinearOperator mit mehreren Eingängen
  • Wie kann ich die Single (a, 'rows') von MATLAB in Python verwenden?
  • Python ist die beste Programmiersprache der Welt.