python - 对具有 NaN 值的 Numpy 数组进行反向排序

标签 python arrays numpy

我有一个 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/

相关文章:

python - Python中子树的大小

Python jaeger-client 跟踪器不报告重用

python - 如何在python上查询ELK中的公共(public)IP?

javascript - Vue 用 [] 括号打印我的数组,为什么?

iphone - 获取数组中对象的索引以在其他数组中查找对应的对象

python - 计算并绘制 (Y) 总计列表中每 (X) 项的平均值

python:pythonbrew 和 virtualenv 有什么区别?

C - 在 2D 数组扫雷中循环到 "plant mines"不起作用

python - 稀疏矩阵的条件数

python - 获取 3D 空间中某个点的 26 个最近邻点 - 矢量化