我在 3D 陣列中有許多 2D 陣列。
假設 3D 陣列的形狀是 (3, 5, 5)。因此,我有 3 個形狀為 (5, 5) 的二維陣列。
每個二維陣列中的第 4 列(idx of 3)具有如下所示的特定值。我想按降序用相應的等級替換這些值。最大值將對應于二維陣列中的最大記錄數(即 shape[1]),最小值將具有 1(不是 0)的等級。
我知道這可以使用 NumPy 的 argsort() 函式來實作。但我要避免的是回圈遍歷 3D 陣列。您能否建議最有效的原生 NumPy 和無回圈替代方案?
謝謝!
[[[1. 0. 0.10. 0.]
[2. 0. 0. 9. 0.]
[3. 0. 0. 8. 0.]
[4. 0. 0. 7. 0.]
[5. 0. 0. 6. 0.]]
[[1. 0. 0. 199. 0.]
[2. 0. 0. 198. 0.]
[3. 0. 0. 196. 0.]
[4. 0. 0. 190. 0.]
[5. 0. 0. 160. 0.]]
[[1. 0. 0. 999. 0.]
[2. 0. 0. 870. 0.]
[3. 0. 0. 270. 0.]
[4. 0. 0. 100. 0.]
[5. 0. 0. 80. 0.]]]
uj5u.com熱心網友回復:
我建議:
arr[:, :, 3] = arr[:, :, 3].argsort(axis=1).argsort(axis=1) 1
請注意,必須使用argsort兩次才能獲得“排名”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518094.html
標籤:Python麻木的排行
