gpt4 book ai didi

python - 使用 NumPy 对索引数组进行 argsort 的任何有效模拟?

转载 作者:行者123 更新时间:2023-12-05 03:25:01 24 4
gpt4 key购买 nike

我有一个索引数组,例如 a = [2, 4, 1, 0, 3],我想将其转换为 np.argsort(a) = [3, 2, 0, 4, 1]。问题是 argsort 有 O(n*log(n)) 时间,但对于我来说它可能是 O(n),我什至有代码:

b = np.zeros(a.size)
for i in range(a.size):
b[a[i]] = i

第二个问题是 Python 中的循环很慢,我希望可以使用一些 NumPy 技巧来实现这个目标。

最佳答案

你有从 0 到 len(a)-1 的所有数字吗?

然后使用智能索引:

a = [2, 4, 1, 0, 3]

b = np.empty(len(a), dtype=int) # or b = np.empty_like(a)
b[a] = np.arange(len(a))
b

输出:array([3, 2, 0, 4, 1])

关于python - 使用 NumPy 对索引数组进行 argsort 的任何有效模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72141935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com