Bor*_*der 7 python numpy scipy
我最近使用了这两个功能,并且正在寻找任何可以说出以下内容的人的意见:
提前致谢。
ps 我无法创建新标签“argsort”或“rankdata”。如果任何有足够地位的人认为他们应该添加到这个问题中,请这样做。
argsort 和rankdata 的用途有根本不同吗?
在我看来,他们确实有一点点。如果数据已排序,第一个给出数据的位置,而第二个给出数据的排名。在关系的情况下,差异会变得很明显:
import numpy as np
from scipy import stats
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(almost_ranks+1)
print(stats.rankdata(a))
Run Code Online (Sandbox Code Playgroud)
结果(通知3. 4. 5与4. 4. 4):
[6. 0. 1. 2. 3. 4. 5. 7.]
[7. 1. 2. 3. 4. 5. 6. 8.]
[7. 1. 2. 4. 4. 4. 6. 8.]
Run Code Online (Sandbox Code Playgroud)
其中一种相对于另一种是否具有性能优势?(具体来说:大型阵列与小型阵列的性能差异?)
在我看来,这两种算法似乎具有相同的复杂性:O(NlgN) 我希望 numpy 实现会稍微快一些,因为它的开销较小,而且它是 numpy。但你应该自己测试一下...检查 scipy.rankdata 的代码,目前,我的 python...- 在其他函数中调用 np.unique ,所以我猜在实践中需要更多时间。 ..
导入排名数据相关的内存开销是多少?
好吧,你导入 scipy,如果你之前没有这样做的话,那么这是 scipy 的开销......