我有以下元组列表:
[(1, 6), (2, 3), (2, 5), (2, 2), (1, 7), (3, 2), (2, 2)]
我希望按元组中的第一个值对该列表进行排序,并按第二个值来解析ties,这样输出如下所示:
^{pr2}$我想不出一个简单的方法来实现这一点,所以我在寻找类似于scipy.stats.rankdata函数的东西。但是,对于我的用例,它缺少一些东西,比如numpy.argsort中的order参数。我觉得我错过了一些显而易见的东西,在这种情况下,我为没有更好地在谷歌上搜索我的答案而道歉!在
编辑:
为了更好地解释我的目标:
给出元组列表
>>> l = [(1, 6), (2, 3), (2, 5), (2, 2), (1, 7), (3, 2), (2, 2)]
我想创建一个包含listl元素排名的列表。例如,按每个元组中的第一个值排序:
>>> from scipy import stats
>>> stats.rankdata([i for i, j in l], method='min')
array([ 1., 3., 3., 3., 1., 7., 3.])
这几乎是我想要的,但是列表中有平局(有两个乘以1)。四次乘以3)。在
我想用每个元组中的第二个值来打破这种联系,例如,两个元组(2,2)将具有相同的秩,但(2,3)和(2,5)将具有不同的秩。结果列表应如下所示:
array([ 1., 5., 6., 3., 2., 7., 3.])
Python自然地对序列进行排序。在
多亏了伊格纳西奥·巴斯克斯·艾布拉姆斯的answer我设法找到了一个解决办法!这也许不是最有效的方法,但它是有效的。在
相关问题 更多 >
编程相关推荐