例如,我有兩個陣列:'x' 代表實際值,'I' 代表他們在陣列中的索引。
x = [1, 2, 3, 3, 2, 4]
I = [0, 1, 2, 3, 4, 5]
在“x”中,第 4 個值與第 3 個值重復,第 5 個值與第 2 個值重復
因此,我想生成
y = [0, 1, 2, 2, 1, 5]
(包含原始陣列值的第一次出現索引)
如何使用 python numpy 方法有效地做到這一點?
uj5u.com熱心網友回復:
你可以這樣做:
u, idx, inv = np.unique(x, return_inverse=True, return_index=True)
>>> idx
array([0, 1, 2, 5], dtype=int64)
>>> inv
array([0, 1, 2, 2, 1, 3], dtype=int64)
>>> idx[inv]
array([0, 1, 2, 2, 1, 5], dtype=int64)
不,清楚后,請閱讀以下檔案np.unique:
inv是可用于重建的唯一陣列的索引x。idx是該x結果在唯一陣列中的索引。
所以你只需x在唯一陣列中獲取該結果的索引并重建它們而不是x
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368019.html
