【发布时间】:2017-03-01 16:35:31
【问题描述】:
我有一个 1000 行 2 列的 numpy 数组:
[[ 0.76 1.28947368]
[ 0.7 0.97142857]
[ 0.7 1.48571429]
[ 0.68 1.11764706]
[ 0.68 1.23529412]
[ 0.68 1.41176471]
[ 0.68 1.41176471]
[ 0.68 1.44117647]
[ 0.66 0.78787879]
[ 0.66 1.03030303]
[ 0.66 1.09090909]
[ 0.66 1.15151515]
[ 0.66 1.15151515]
[ 0.66 1.21212121]
[ 0.66 1.24242424]]
很明显,这个数组按第 0 列降序排序,按第 1 列升序排序。我想为这个数组的每一行分配排名,这样重复的行(两列或多行的列中的值都是equal) 具有与第 2 列相同的排名和插入排名。
预期输出:
[[0.76 1.28947368 1]
[ 0.7 0.97142857 2]
[ 0.7 1.48571429 3]
[ 0.68 1.11764706 4]
[ 0.68 1.23529412 5]
[ 0.68 1.41176471 6]
[ 0.68 1.41176471 6] # as this row is duplicate of row above it
[ 0.68 1.44117647 7]
[ 0.66 0.78787879 8]
[ 0.66 1.03030303 9]
[ 0.66 1.09090909 10]
[ 0.66 1.15151515 11]
[ 0.66 1.15151515 11] # as this row is duplicate of row above it
[ 0.66 1.21212121 12]
[ 0.66 1.24242424 13]]
实现这一目标的最有效方法是什么?
【问题讨论】:
-
那么,你能写下预期的 o/p 吗?
-
如何定义:1.重复行; 2. 排位; ?
-
@Divakar 我添加了预期的输出。
标签: python arrays numpy ranking