2016-05-13 13 views
0

Ich schreibe einen Teil des Codes in Matlab und fahre dann mit Python fort. In Matlab habe ich Labels wieKonvertierung von Matlab zu Python-Labels

labels=[1 2 49 49 50 50 51]; 

und in Python ich die have`labels = laden muß [ '1', '2', '49', '49', '50', '50' ?, '51' ]

Wie habe ich versucht, o1 = scipy.io.loadmat('labels.mat') labels1=np.array(o1['labels']) aber ich

[[array([[1]], dtype=uint8) array([[1]], dtype=uint8) 
    array([[1]], dtype=uint8) array([[2]], dtype=uint8) 
    array([[2]], dtype=uint8) array([[2]], dtype=uint8) 
    array([[49]], dtype=uint8) array([[49]], dtype=uint8) 
    array([[49]], dtype=uint8) array([[50]], dtype=uint8) 
    array([[50]], dtype=uint8) array([[50]], dtype=uint8) 
    array([[51]], dtype=uint8) array([[51]], dtype=uint8) 
    array([[51]], dtype=uint8) array([[52]], dtype=uint8) 
    array([[52]], dtype=uint8) array([[52]], dtype=uint8) 
    array([[53]], dtype=uint8) array([[53]], dtype=uint8) 
    array([[53]], dtype=uint8) array([[54]], dtype=uint8) 
    array([[54]], dtype=uint8) array([[54]], dtype=uint8)]] 

bekommen ich brauche das, weil das sind Etiketten für den nächsten Schritt:

Y=pdist(X, 'correlation') 
Z=hierarchy.linkage(Y, method='complete', metric='correlation') 
row_dendr = hierarchy.dendrogram(Z, labels=labels1) 

Kann ich es irgendwie in Matlab speichern, um es einfacher zu machen? Diese Labels mache ich in Schleife, also ist es ein großer Vektor. Wenn ich tippe onlu o1 Druck erhalte ich:

{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Fri May  13 20:11:14 2016', '__version__': '1.0', 'labels': array([[array([[1]],  dtype=uint8), array([[1]], dtype=uint8), 
    array([[1]], dtype=uint8), array([[2]], dtype=uint8), 
    array([[2]], dtype=uint8), array([[2]], dtype=uint8), 
    array([[49]], dtype=uint8), array([[49]], dtype=uint8), 
    array([[49]], dtype=uint8), array([[50]], dtype=uint8), 
    array([[50]], dtype=uint8), array([[50]], dtype=uint8), 
    array([[51]], dtype=uint8), array([[51]], dtype=uint8), 
    array([[51]], dtype=uint8), array([[52]], dtype=uint8), 
    array([[52]], dtype=uint8), array([[52]], dtype=uint8), 
    array([[53]], dtype=uint8), array([[53]], dtype=uint8), 
    array([[53]], dtype=uint8), array([[54]], dtype=uint8), 
    array([[54]], dtype=uint8), array([[54]], dtype=uint8)]], dtype=object), '__globals__': []} 
+0

ich nie die scipy.io.loadmat Funktion verwendet haben, Aber wenn man die Dokumentation betrachtet, gibt es ein Wörterbuch zurück. Was bekommst du, wenn du 'print o1' eingibst? Wenn es tatsächlich ein Wörterbuch zurückgibt, denke ich, dass Sie vielleicht die Daten aus den Werten herausziehen können - es sieht so aus, als ob Sie nur eine Liste wollen. – flyingmeatball

+0

Ich habe meinen Beitrag bearbeitet! –

+0

Es sieht so aus, als würden Ihre Labels, die Sie in Matlab einfügen, nicht dem entsprechen, was Sie in Python lesen ... Sind Sie sicher, dass diese Labels das wiederspiegeln, was Sie gerade lesen? – flyingmeatball

Antwort

0

Was passiert, wenn Sie Labels wie folgt definieren und führen Sie den folgenden Code ein:

from itertools import chain 
labels1=o1['labels'] 
list(chain(*labels1)) 
Verwandte Themen