rankdata#
- scipy.stats.rankdata(a, method='average', *, axis=None, nan_policy='propagate')[Quellcode anzeigen]#
Weist Daten Ränge zu und behandelt Gleichstände angemessen.
Standardmäßig (
axis=None) wird das Datenarray zuerst abgeflacht und ein flaches Array von Rängen zurückgegeben. Formen Sie das Rang-Array bei Bedarf separat in die Form des Datenarrays um (siehe Beispiele).Ränge beginnen bei 1. Das Argument method steuert, wie Ränge für gleiche Werte zugewiesen werden. Weitere Informationen zu Ranking-Methoden finden Sie unter [1].
- Parameter:
- aarray_like
Das Array von Werten, die gerankt werden sollen.
- method{‘average’, ‘min’, ‘max’, ‘dense’, ‘ordinal’}, optional
Die Methode, die zur Zuweisung von Rängen an gleichrangige Elemente verwendet wird. Folgende Methoden sind verfügbar (Standard ist ‘average’)
‘average’: Der Durchschnitt der Ränge, die allen gleichrangigen Werten zugewiesen worden wären, wird jedem Wert zugewiesen.
‘min’: Das Minimum der Ränge, die allen gleichrangigen Werten zugewiesen worden wären, wird jedem Wert zugewiesen. (Dies wird auch als „Wettbewerbsranking“ bezeichnet.)
‘max’: Das Maximum der Ränge, die allen gleichrangigen Werten zugewiesen worden wären, wird jedem Wert zugewiesen.
‘dense’: Ähnlich wie ‘min’, aber dem Rang des nächsthöheren Elements wird der Rang zugewiesen, der unmittelbar auf die Ränge folgt, die den gleichrangigen Elementen zugewiesen wurden.
‘ordinal’: Allen Werten wird ein eindeutiger Rang zugewiesen, der der Reihenfolge entspricht, in der die Werte in a auftreten.
- axis{None, int}, optional
Achse, entlang der das Ranking durchgeführt werden soll. Wenn
None, wird das Datenarray zuerst abgeflacht.- nan_policy{‘propagate’, ‘omit’, ‘raise’}, optional
Definiert, wie mit NaN-Werten im Input umgegangen wird. Die folgenden Optionen sind verfügbar (Standard ist ‘propagate’)
‘propagate’: propagiert NaNs durch die Rangberechnung
‘omit’: führt die Berechnungen unter Ignorierung von NaN-Werten durch
‘raise’: löst einen Fehler aus
Hinweis
Wenn nan_policy ‘propagate’ ist, ist die Ausgabe ein Array aus *allen* NaNs, da Ränge relativ zu NaNs im Eingabearray undefiniert sind. Wenn nan_policy ‘omit’ ist, werden NaNs in a beim Rangen der anderen Werte ignoriert, und die entsprechenden Positionen der Ausgabe sind NaN.
Hinzugefügt in Version 1.10.
- Rückgabe:
- ranksndarray
Ein Array der Größe gleich der Größe von a, das Rangwerte enthält.
Hinweise
rankdataunterstützt experimentell Python Array API Standard-kompatible Backends zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie eine UmgebungsvariableSCIPY_ARRAY_API=1setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Folgende Kombinationen aus Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
⛔
PyTorch
⛔
⛔
JAX
⚠️ kein JIT
⚠️ kein JIT
Dask
⛔
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Referenzen
[1]„Ranking“, https://en.wikipedia.org/wiki/Ranking
Beispiele
>>> import numpy as np >>> from scipy.stats import rankdata >>> rankdata([0, 2, 3, 2]) array([ 1. , 2.5, 4. , 2.5]) >>> rankdata([0, 2, 3, 2], method='min') array([ 1, 2, 4, 2]) >>> rankdata([0, 2, 3, 2], method='max') array([ 1, 3, 4, 3]) >>> rankdata([0, 2, 3, 2], method='dense') array([ 1, 2, 3, 2]) >>> rankdata([0, 2, 3, 2], method='ordinal') array([ 1, 2, 4, 3]) >>> rankdata([[0, 2], [3, 2]]).reshape(2,2) array([[1. , 2.5], [4. , 2.5]]) >>> rankdata([[0, 2, 2], [3, 2, 5]], axis=1) array([[1. , 2.5, 2.5], [2. , 1. , 3. ]]) >>> rankdata([0, 2, 3, np.nan, -2, np.nan], nan_policy="propagate") array([nan, nan, nan, nan, nan, nan]) >>> rankdata([0, 2, 3, np.nan, -2, np.nan], nan_policy="omit") array([ 2., 3., 4., nan, 1., nan])