我最近使用了这两个功能,并且正在寻找能够与以下人士交流的人的意见:
提前致谢。
P.S。我无法创建新标签' argsort'或者' rankdata'。如果有任何有足够信誉的人觉得他们应该加入这个问题,请做。
答案 0 :(得分:1)
argsort和rankdata在目的上有根本的不同吗?
在我看来,他们略有做法。如果数据已排序,第一个给出数据的位置,第二个给出数据的rank。在关系的情况下,这种差异会变得明显:
a = np.array([ 5, 0.3, 0.4, 1, 1, 1, 3, 42])
almost_ranks = np.empty_like(a)
almost_ranks[np.argsort(a)] = np.arange(len(a))
print(almost_ranks)
print(scipy.stats.rankdata(a))
一个是否有性能优势? (具体来说:大型与小型阵列的性能差异?)
在我看来,两种算法都具有相同的复杂性:O(NlgN)我希望numpy实现稍快一些,因为它有一点点开销,加上它的numpy。但你应该自己测试一下......检查scipy.rankdata的代码,它似乎是-at present,我的python ......-在其他函数中调用np.unique,所以我猜它在实践中需要更多...
导入rankdata的内存开销是多少?
好吧,你导入scipy,如果你以前没有这样做的话,那就是scipy的开销......