說我有一個排序numpy的數組:如何找到重新排列的numpy數組的索引?
arr = np.array([0.0, 0.0],
[0.5, 0.0],
[1.0, 0.0],
[0.0, 0.5],
[0.5, 0.5],
[1.0, 0.5],
[0.0, 1.0],
[0.5, 1.0],
[1.0, 1.0])
,並假設我做一個不平凡的操作就可以了,這樣我有一個新的數組是一樣的舊的,但在其他訂單:
arr2 = np.array([0.5, 0.0],
[0.0, 0.0],
[0.0, 0.5],
[1.0, 0.0],
[0.5, 0.5],
[1.0, 0.5],
[0.0, 1.0],
[1.0, 1.0],
[0.5, 1.0])
現在的問題是:你如何得到arr2
的每個元素放置在arr
的指數。換句話說,我想要一個同時使用數組和數組的方法,它返回的數組的長度與arr2
相同,但是元素的索引爲arr
。例如,返回數組的第一個元素將是arr
中arr2
的第一個元素的索引。
where_things_are(arr2, arr)
return : array([1, 0, 3, 2, 4, 5, 6, 8, 7])
像numpy這樣的函數是否已經存在?
編輯:
我想:
np.array([np.where((arr == x).all(axis=1)) for x in arr2])
返回我想要的東西,但我的問題仍然成立:有沒有這樣做使用numpy的方法更有效的方法是什麼?
EDIT2:
還應該工作,如果的arr2
長度不一樣的原始數組的長度(例如,如果我去掉了一些元件從它)。因此它不是找到並反轉排列,而是找出元素的位置。
「反」不會是唯一的 - 通過增加索引軸來增加原始ARR,通過「非平凡操作」進行操作 – f5r5e5d
我使用的非平凡操作將保留唯一性yes,但保留由於操作不能維持訂單,所以原始指數將無濟於事。 – fgoudra
也對所添加的索引軸應用相同的重新排序操作,之後索引仍然標記了arr的變換元素的原始位置,易於在所添加的索引軸上進行排序以恢復原始順序 – f5r5e5d