我有一個索引陣列,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 技巧來實作目標。
uj5u.com熱心網友回復:
你有 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])
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471436.html
