相关疑难解决方法(0)

numpy数组的排名可能有重复

我有一个numpy数组的浮点数/整数,并希望将其元素映射到他们的行列.

如果数组没有重复项,则可以通过以下代码解决该问题

In [49]: a1
Out[49]: array([ 0.1,  5.1,  2.1,  3.1,  4.1,  1.1,  6.1,  8.1,  7.1,  9.1])

In [50]: a1.argsort().argsort()
Out[50]: array([0, 5, 2, 3, 4, 1, 6, 8, 7, 9])
Run Code Online (Sandbox Code Playgroud)

现在我想将此方法扩展到具有可能重复的数组,以便将重复项映射到相同的值.例如,我想要数组a

a2 = np.array([0.1, 1.1, 2.1, 3.1, 4.1, 1.1, 6.1, 7.1, 7.1, 1.1])
Run Code Online (Sandbox Code Playgroud)

要映射到任何一个

0 1 4 5 6 1 7 8 8 1
Run Code Online (Sandbox Code Playgroud)

或者

0 3 4 5 6 3 7 9 9 3
Run Code Online (Sandbox Code Playgroud)

或者

0 2 4 5 6 2 7 8.5 8.5 2
Run Code Online (Sandbox Code Playgroud)

在第一个/第二个案例中,如果我们只应用a2.argsort().argsort(),我们将重复项映射到它们中的最小/最大等级.第三种情况只是前两种情况的平均值.

有什么建议?

编辑(效率要求) …

python sorting numpy scipy

8
推荐指数
1
解决办法
4286
查看次数

标签 统计

numpy ×1

python ×1

scipy ×1

sorting ×1