scipy.stats.

rankdata#

scipy.stats.rankdata(a, method='average', *, axis=None, nan_policy='propagate')[原始碼]#

為資料指定等級,並適當處理並列關係。

預設情況下 (axis=None),資料陣列會先被展平,並返回一個展平的等級陣列。如果需要,可以將等級陣列另外重新塑形為資料陣列的形狀(請參閱範例)。

等級從 1 開始。method 參數控制如何將等級分配給相等的值。有關排名方法的進一步討論,請參閱 [1]

參數:
aarray_like

要排名的數值陣列。

method{‘average’, ‘min’, ‘max’, ‘dense’, ‘ordinal’}, optional

用於將等級分配給並列元素的方法。以下方法可用(預設為 ‘average’)

  • ‘average’: 將分配給所有並列值的等級平均值分配給每個值。

  • ‘min’: 將分配給所有並列值的等級最小值分配給每個值。(這也稱為「競爭」排名。)

  • ‘max’: 將分配給所有並列值的等級最大值分配給每個值。

  • ‘dense’: 類似於 ‘min’,但下一個最高元素的等級會被分配為緊接在分配給並列元素之後的等級。

  • ‘ordinal’: 所有值都會被賦予一個不同的等級,對應於值在 a 中出現的順序。

axis{None, int}, optional

執行排名的軸線。如果 None,則資料陣列會先被展平。

nan_policy{‘propagate’, ‘omit’, ‘raise’}, optional

定義輸入包含 nan 時的處理方式。以下選項可用(預設為 ‘propagate’)

  • ‘propagate’: 在等級計算中傳播 nan

  • ‘omit’: 執行計算時忽略 nan 值

  • ‘raise’: 引發錯誤

注意

nan_policy 為 ‘propagate’ 時,輸出是一個全部 nan 的陣列,因為相對於輸入中 nan 的等級是未定義的。當 nan_policy 為 ‘omit’ 時,在對其他值進行排名時,會忽略 a 中的 nan,並且輸出中相應的位置為 nan。

在版本 1.10 中新增。

返回:
ranksndarray

大小與 a 大小相同的陣列,包含等級分數。

參考文獻

範例

>>> 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])