Zum Beispiel habe ich einen Strom von Array mit Zahlen im Bereich von 0.0
bis 10.0
inklusive.Schnell zuzuweisen ein Array zu n Bins mit gleicher Länge
Ich möchte die Nummern in arr
zu 5
Bins gleicher Länge schnell zuweisen.
Mit gleicher Länge meine ich bin die Intervallintervalle sind [0.0, 2.0), [2.0, 4.0), [4.0, 6.0), [6.0, 8.0), [8.0, 10.0]
.
Das Problem ist, dass das letzte Intervall nicht das gleiche wie die anderen Intervalle ist.
Test:
import numpy as np
# Things we know and can pre-calculate
n_bins = 5
minimal = 0.0
maximal = 10.0
reciprocal_bin_length = n_bins/(maximal - minimal)
# Let's say the stream gives 1001 numbers every time.
data = np.arange(1001)/100
norm_data = (data - minimal) * reciprocal_bin_length
norm_data = norm_data.astype(int)
print(norm_data.max())
print(norm_data.min())
Ergebnis:
5
0
Der Bin-Index 0 sein soll, 1, 2, 3 oder 4, jedoch nicht 5.
Ich glaube, Sie können für [numpy.digitize] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.digitize.html) suchen. – Marein
min ist 0. max ist genau 10 so. digitalisieren ermöglicht eine ungleiche Länge und könnte langsamer sein. das ist gleiche Länge. –
was ist mit [pandas.cut] (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html) – jeremycg