scipy.stats.rankdata数据在相反的方向,保持联系和

2024-09-28 20:48:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我用scipyrankdata来分配等级。我需要颠倒指定的等级,这样最高的数字被赋予1的等级。除了不能正确处理ties,并且返回int而不是float之外,还可以执行以下操作。我假设这与rankdata中的循环有关,但不确定如何实现这一点。你知道吗

from scipy.stats import rankdata
arr = np.array([[10, 15, 19, 8, 8]])
rank = rankdata([-1 * i for i in arr]).astype(float)

给定结果:

[3, 2, 1, 4, 4]

预期结果:

[3., 2., 1., 4.5, 4.5]

Tags: fromimportstatsnp数字scipyfloatarray
1条回答
网友
1楼 · 发布于 2024-09-28 20:48:10

“我需要反转指定的等级,以便最高的数字的等级为1”

这是rankdata的默认行为。你知道吗

“除了不能正确处理扎带外,请确保以下各项正常工作”

关于关系的行为主要通过方法参数来处理。参见下面的示例列表(source):

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

“返回int而不是float” 我不知道你是怎么得到这个的。 我唯一能想到的就是文档中列出的注释: 注意事项

All floating point types are converted to numpy.float64 before ranking. This may result in spurious ties if an input array of floats has a wider data type than numpy.float64 (e.g. numpy.float128).

相关问题 更多 >