Amy 原创整理|资料核验:2026-11-06
SciPy的rankdata从1开始分配秩,默认method='average':若多个相同数值占据不同名次,就把这些名次的平均数分给它们。因此,结果出现2.5未必是数据坏了,也可能只是默认并列规则。
Amy原创教学示例:输入[10,20,20,40],按从小到大的默认规则,得到[1,2.5,2.5,4]。改用method='min'会是[1,2,2,4];改用'dense'则是[1,2,2,3],并列组之后不跳过名次。这些是同一组虚构数字采用不同规则的结果。
另一个容易忽略的设置是axis:默认None会先把整个数组展平,再排名;它不会自动按每一行或每一列各自比较。多组数据需要分别排名时,应明确指定对应维度。
Amy建议:在表格说明中一起写明“小值还是大值优先、并列规则、比较范围”。不要把'ordinal'当成客观地打破平手:官方说明它会给所有元素不同名次,相同值之间按在输入中的出现顺序处理。本文只解释排名接口,不声称某一种规则适合所有评选。
官方来源:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rankdata.html