Python 数组中的值排序:';反向';此函数的关键字参数无效

Python 数组中的值排序:';反向';此函数的关键字参数无效,python,arrays,python-3.x,sorting,Python,Arrays,Python 3.x,Sorting,我尝试按降序对数组中的值进行排序。如果我按升序尝试,它会工作,但当我按降序尝试时,我会出错 e = np.array([[5.,3.,8.],[6.,7.,1.],[4.,8.,2.]]) e.sort() 结果: e = array([[3.,5.,8.],[1.,6.,7.],[2.,4.,8.]]) TypeError: 'reverse' is an invalid keyword argument for this function 现在按相反顺序: e.sort(rever

我尝试按降序对数组中的值进行排序。如果我按升序尝试,它会工作,但当我按降序尝试时,我会出错

e = np.array([[5.,3.,8.],[6.,7.,1.],[4.,8.,2.]])
e.sort()
结果:

e = array([[3.,5.,8.],[1.,6.,7.],[2.,4.,8.]])
TypeError: 'reverse' is an invalid keyword argument for this function
现在按相反顺序:

  e.sort(reverse=True)
结果:

e = array([[3.,5.,8.],[1.,6.,7.],[2.,4.,8.]])
TypeError: 'reverse' is an invalid keyword argument for this function
我还尝试了在操作符import itemgetter的
之后执行
e.sort(key=itemgetter(1))
,但出现了相同的错误(“reverse”被“key”替换)


为什么会这样?为什么它不起作用?为什么会出现此错误(这是使用键或右反转的方法)?

在按升序坐好后尝试使用fliplr

为什么会这样?为什么它不起作用

只是因为函数不提供那个功能

“修复”此问题的一种方法是对感兴趣的列进行argsort。然后,您可以反转输出,并使用该输出对
e
进行索引,以便按照您的意愿对项目进行排序:

>>> import numpy as np
>>> e = np.array([[5.,3.,8.],[6.,7.,1.],[4.,8.,2.]])
>>> e
array([[ 5.,  3.,  8.],
       [ 6.,  7.,  1.],
       [ 4.,  8.,  2.]])
>>> col = 0
>>> idx_asc = np.argsort(e[:, col])
>>> idx_desc = idx_asc[::-1]
>>> e[idx_desc]
array([[ 6.,  7.,  1.],
       [ 5.,  3.,  8.],
       [ 4.,  8.,  2.]])

请注意,这种方法不如传递
键和
reverse=True
灵活(也不太方便)。具体地说,如果您想在多个列上排序以打破关系,这种方法将失败。

您不能根据使用
反向
关键字参数。您可以按升序排序数组,然后使用
[::-1]
切片将其反转,或者使用
反转()
视图。

我在这里找到了我的结果:
f=-np.sort(-e)
工作得很好!我的数据集中还有一些nan值,它们应该位于数组的末尾。通过使用fliplr,这些将被放在前面。否则这将是完美的。没有特别感兴趣的列,所有的行都应该单独排序。@SVerhoef--我想我不明白你对它们的理解是什么
key=itemgetter(1)
。。。