Erhalten von Number of samples, -20, must be non-negative.
beim Versuch, ein Histogramm meines Datensatzes zu erstellen.
import numpy as np
my_data = np.loadtxt("my_data.csv", delimiter=',', dtype=np.int16)
n_base, bins_base = np.histogram(my_data, bins="auto")
Hier ist my_data.csv
Die Anzahl der Proben (-20) darf nicht negativ sein.
1.16.4 3.7.4 (Standard, 13. August 2019, 20:35:49)
[GCC 7.3.0]
Interessanterweise wird das Histogramm ohne Probleme erstellt, wenn ich diesen Datensatz in Float konvertiere
Danke für den Fehlerbericht. Ich kann bestätigen, dass dieser Fehler auch im Hauptzweig vorhanden ist.
NumPy-Entwickler: Das Problem ist, dass es eine interne Funktion gibt, _hist_bin_sturges
in histograms.py
, die die Methode ptp
, um die Differenz zwischen Maximum und Minimum eines Arrays mit zu berechnen dtype int16
. In diesem Fall beträgt das Maximum 32767 und das Minimum -16, sodass die Differenz 32783 betragen sollte. ptp
gibt jedoch einen Wert mit demselben Typ wie das Array zurück, sodass -32753 zurückgegeben wird falsche Berechnung.
Wir könnten das beheben, indem wir x.ptp()
durch etwas wie x.max().item() - x.min().item()
ersetzen.
Die meisten anderen Bin-Schätzer haben das gleiche Problem mit x.ptp()
.
Eine mögliche Lösung finden Sie unter https://github.com/numpy/numpy/pull/14381.
Hilfreichster Kommentar
Danke für den Fehlerbericht. Ich kann bestätigen, dass dieser Fehler auch im Hauptzweig vorhanden ist.
NumPy-Entwickler: Das Problem ist, dass es eine interne Funktion gibt,
_hist_bin_sturges
inhistograms.py
, die die Methodeptp
, um die Differenz zwischen Maximum und Minimum eines Arrays mit zu berechnen dtypeint16
. In diesem Fall beträgt das Maximum 32767 und das Minimum -16, sodass die Differenz 32783 betragen sollte.ptp
gibt jedoch einen Wert mit demselben Typ wie das Array zurück, sodass -32753 zurückgegeben wird falsche Berechnung.Wir könnten das beheben, indem wir
x.ptp()
durch etwas wiex.max().item() - x.min().item()
ersetzen.