Rom*_*man 8 python arrays numpy
我有一个numpy
带有一些NaN
值的数组:
>>> a
array([ 1., -1., nan, 0., nan], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
我可以按升序或'降序'排序:
>>> numpy.sort(a)
array([ -1., 0., 1., nan, nan], dtype=float32)
>>> numpy.sort(a)[::-1]
array([ nan, nan, 1., 0., -1.], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
但是,我想要的是降序,最后是NaN
值,如下所示:
>>> numpy.genuine_reverse_sort(a)
array([ 1., 0., -1., nan, nan], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
怎么可以实现呢?我怀疑没有特别的方法.
两次否定这些值怎么样:
>>> a = np.array([2., -1., nan, 0., nan])
>>> np.sort(a)
array([ -1., 0., 2., nan, nan])
>>> -np.sort(-a)
array([ 2., 0., -1., nan, nan])
Run Code Online (Sandbox Code Playgroud)
我认为你可能是对的 - 没有内置的特殊方法来做到这一点.但是您可以通过将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)
Run Code Online (Sandbox Code Playgroud)