2012-03-26 4 views
3

Ich habe ein Array Y der Form (es ist nur ein Beispiel, ich habe eine riesige Datenmenge in dieser Form). Das Array wird durch die Verwendung numpy des vstack und hstack gebildet (dh ich will nicht zu ändern, wie ich dieses Array erhalten, wie ich es von einigen komplexen Operationen erhalten haben):Gibt es eine effiziente Methode, um numpy.darray in eine Liste zu konvertieren?

Y=array([[1, 1,2], 
     [1, 2,0], 
     [-1, 3,1], 
     [-1, 2,2]]) 
y=[1,1,-1,-1] 
Y1=list(Y) 

Jetzt habe ich die Daten an eine bin Eingabe libsvm-Funktion erwartet diese Bibliothek, dass die Eingabeparameter in Wörterbuch-, Listen- oder Tupelform vorliegen. Daher ist der Code für das gleiche:

prob=svm_problem(y, Y1) 

Die obige Funktion gibt einen Fehler aus, dass ‚xi sollte eine Wörterbuch, Liste oder Tupel sein‘. Der andere Weg, den ich kenne, besteht darin, Y in die Liste iterativ zu konvertieren. Die Art und Weise, es zu tun ist:

Die obige Methode funktioniert gut, aber ist langsam angesichts der riesigen Daten, die ich habe. Gibt es eine schnellere Methode, um das gleiche zu erreichen?

Antwort

7
>>> Y.tolist() 
[[1, 1, 2], [1, 2, 0], [-1, 3, 1], [-1, 2, 2]] 

Ich bin mir nicht sicher, ob dies viel schneller als das, was Sie für große zweidimensionale Arrays haben wird. Das Konvertieren solcher Arrays in einfache Listen ist eine inhärent ineffiziente Operation - deshalb verwenden Sie NumPy an erster Stelle.

Verwandte Themen