是否有更好/更快的方法来计算数组中每个元素的相对等级?

问题描述 投票:0回答:2

我想计算数组中每个元素在其之前的元素之间的相对排名。例如,在数组[2,1,4,3]中,[2,1]的子集数组中第二个元素(1)的相对排名(从小到大)为1。 [2,1,4]的子集数组中的元素(4)为3。每个元素的最终相对排名应该为[1,1,3,3]。

我正在使用以下python代码:

x=np.array([2,1,4,3])
rr=np.ones(4)
for i in range(1,4):
    rr[i]=sum(x[i]>=x[:i+1])

还有其他更快的方法吗?

谢谢!

python performance numpy sorting rank
2个回答
0
投票
n = len(x) m1 = x[1:,None]>=x m2 = np.tri(n-1,n,k=1, dtype=bool) rr[1:] = (m1 & m2).sum(1)
© www.soinside.com 2019 - 2024. All rights reserved.