2017-02-21 3 views
1

Ich mag würde gelten das Ergebnis von numpy.percentile zu seinem Argumente, das heißt, Karte jede Zahl in dem Eingangsvektor zu seiner Quantil.Karte Zahlen auf ihre Perzentile

ZB wenn v=np.array([1,2,3,4]), und ich möchte nur zwei Quantile (größer und kleiner als der Median), würde ich np.array([0,0,1,1]) mir zu sagen, dass die ersten beiden Elemente v kleiner sind als der Median und die letzten beiden sind größer als die Median.

Bitte beachte, dass ich interessiert bin, sagen wir, Dezilen, nicht nur der Median!

IOW, schlug @PaulPanzer den Nagel:

np.digitize(v,np.percentile(v,quantiles)) 

Dank!

+2

haben einen Blick auf 'numpy.digitize' –

+0

@PaulPanzer: Schalten Sie bitte Ihren Kommentar zu einer Antwort und ich wird es akzeptieren. – sds

Antwort

2

Verwendung np.digitize:

perc = np.percentile(data, q) 
indices = np.digitize(data, perc) 

Beispiel q = [25,50,75], data = np.arange(8):

indices 
# array([0, 0, 1, 1, 2, 2, 3, 3]) 
3
(v > np.percentile(v, 50)).astype(int) 
Out[93]: 
array([0, 0, 1, 1]) 
+0

Was mache ich für, sagen wir 10 Perzentile, nicht nur den Median? – sds

+0

Sieht so aus als würdest du die Antwort bekommen. Ich wollte etwas vorschlagen wie 'np.digitize (v, bins = np.percentile (v, np.bereich (10, 100, 10))'). – Psidom

Verwandte Themen