我有一个 numpy
数组,其中包含一些 NaN
值:
>>> a
array([ 1., -1., nan, 0., nan], dtype=float32)
我可以按升序或“降序”顺序对其进行排序:
>>> numpy.sort(a)
array([ -1., 0., 1., nan, nan], dtype=float32)
>>> numpy.sort(a)[::-1]
array([ nan, nan, 1., 0., -1.], dtype=float32)
但是,我想要的是在末尾带有 NaN
值的降序,如下所示:
>>> numpy.genuine_reverse_sort(a)
array([ 1., 0., -1., nan, nan], dtype=float32)
这是如何实现的?我怀疑对此没有特殊的方法。
最佳答案
我想你可能是对的——没有内置的特殊方法可以做到这一点。但是您可以通过将 NaN 滚动到您想要的位置来分两步完成:
a = np.array([ 1., -1., np.nan, 0., np.nan], dtype=np.float32)
sa = np.sort(a)[::-1]
np.roll(sa,-np.count_nonzero(np.isnan(a)))
array([ 1., 0., -1., nan, nan], dtype=float32)
关于python - 对具有 NaN 值的 Numpy 数组进行反向排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038675/