我在3D数组中有许多2D数组。
让我们假设3D数组的形状是(3,5,5)。因此,我有3个2D形状数组(5,5)。
每个2D阵列中的列#4(IDX为3)具有如下所示的特定值。我想用相应的降序排名来替换这些值。最高值将对应于2D数组中的最大记录数(即形状[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.]]]
1条答案
按热度按时间g6ll5ycj1#
我建议:
请注意,两次使用
argsort
是获得“排名”所必需的。