如何对Python NumPy数组进行并列排序
在这篇文章中,我们将看到如何用Python对Numpy数组进行破格排名。
排列是一种基本的统计操作,用于数据科学、社会学等众多领域。一个非常粗暴的方法是将数组的索引按其相应的值排序。这种方法在不涉及给定数字组中相同数值的情况下会很方便。本文将更进一步,探讨Python库Scipy中的rankdata()函数,并说明它对有并列关系的列表的用法。
rankdata() 函数
为了计算排名,我们将使用Python中scipy.stats库的rankdata()函数。该函数有五种不同的打破平局的策略,其语法如下。
语法: scipy.stats.rankdata(arr, method=’average’, axis=None)
参数:
- arr:一个n维的数组
- method: 提到破局策略的字符串。它有5种类型。
- ‘average’ : 将分配给所有并列值的等级的平均值分配给每个值。
- ‘min’ : 将分配给所有并列值的最小等级分配给每个值。
- ‘max’ : 将分配给所有并列值的最大等级分配给每个值。
- ‘dense’ : 下一个最高元素的等级被分配到紧随分配给并列元素的等级之后。
- ‘ordinal’ : 所有的值都有一个明显的等级,对应于这些值在arr中出现的顺序。
- axis: 要进行排序的轴。如果没有,则首先对数据阵列进行平移。
返回:一个Numpy数组,其大小等于arr的大小,包含等级分数。
例子1:在一个一维Numpy数组上的排名
在这个例子中,我们将在一个一维的Numpy数组上探索所有的破局策略。
输出:
示例2:使用’axis’参数对一个二维Numpy数组沿某一轴线进行排序
在这个例子中,我们将在一个二维Numpy数组上沿行探索所有的破局策略。
输出:
正如我们所看到的,二维数组’arr’中每一列的值都是通过比较同一行中的相应条目来分配等级。