我有一个Below函数,它在三维数组中对2D数组的第三列进行排序。
arr[:, :, 3] = arr[:, :, 3].argsort(axis=1)[:, ::-1].argsort(axis=1) + 1
问题是,NaN值也在进行排名,这是不应该发生的。有没有办法在使用argort进行排名时跳过/忽略NaN值?如果不是,还可以用什么其他 numpy 方法?谢谢。
vmpqdwk31#
我找到了一个解决方法,如下所示:
# Replace NaNs with Negative Infinities np.nan_to_num(arr, copy=False, nan=-np.inf) # Rank arr[:, :, 3] = arr[:, :, 3].argsort(axis=1)[:, ::-1].argsort(axis=1) + 1 # Return NaNs back if needed (replace negative infinities with NaNs) arr[arr== -np.inf] = np.nan
1条答案
按热度按时间vmpqdwk31#
我找到了一个解决方法,如下所示: