2D-NumPy-Array zum Zeichnen eines Histogramms in ein 1D-Array umwandeln

8

Ich versuche ein Histogramm mit Matplotlib zu zeichnen. Ich muss mein einzeiliges 2D-Array konvertieren

%Vor%

in ein 1D-Array

%Vor%

Wie kann ich das tun?

    
bioslime 31.07.2012, 12:10
quelle

5 Antworten

10

Sie können die Spalte direkt indizieren:

%Vor%

Oder Sie können squeeze verwenden:

%Vor%     
mtrw 31.07.2012, 12:18
quelle
14

Hinzufügen von ravel als weitere Alternative für zukünftige Suchende. Aus den Dokumenten,

  

Dies ist äquivalent zu reshape (-1, order = order).

Da das Array 1xN ist, sind alle folgenden Elemente äquivalent:

  • arr1d = np.ravel(arr2d)
  • arr1d = arr2d.ravel()
  • arr1d = arr2d.flatten()
  • arr1d = np.reshape(arr2d, -1)
  • arr1d = arr2d.reshape(-1)
  • arr1d = arr2d[0, :]
khstacking 21.07.2014 14:28
quelle
2

reshape wird den Trick machen.

Es gibt auch eine spezifischere Funktion, flatten , scheint genau das zu tun, was Sie wollen.

    
Kos 31.07.2012 12:13
quelle
2

Die Antwort von mtrw macht den Trick für ein Array, das tatsächlich nur eine Zeile wie dieses hat. Wenn Sie jedoch ein 2D-Array mit Werten in zwei Dimensionen haben, können Sie es wie folgt konvertieren

%Vor%

Von hier aus finden Sie die Form des Arrays mit np.shape und finden das Produkt davon mit np.product das ergibt jetzt die Anzahl der Elemente. Wenn Sie jetzt np.reshape() verwenden, um das Array auf eine Länge der Gesamtanzahl von Elementen umzuformen, haben Sie eine Lösung, die immer funktioniert.

%Vor%     
user3569257 23.10.2014 13:43
quelle
0

Verwenden Sie numpy.flat

%Vor%

Die flat -Eigenschaft gibt einen 1D-Iterator über Ihr 2D-Array zurück. Diese Methode wird auf eine beliebige Anzahl von Zeilen (oder Dimensionen) verallgemeinert. Für große Arrays kann es wesentlich effizienter sein als eine abgeflachte Kopie.

    
Waylon Flinn 24.12.2013 15:47
quelle

Tags und Links