Python 按不同顺序对多列上的结构化Numpy数组排序

Python 按不同顺序对多列上的结构化Numpy数组排序,python,arrays,sorting,numpy,numpy-ndarray,Python,Arrays,Sorting,Numpy,Numpy Ndarray,我有一个结构化的numpy数组: dtype = [('price', float), ('counter', int)] values = [(35, 1), (36, 2),           (36, 3)] a = np.array(values, dtype=dtype) 如果价格相等,我想对价格进行排序,然后对计数器进行排序: a_sorted = np.sort(a, order=['price', 'counter'])[::-1] 我需要按降序的价格,当价格相等时,考虑按

我有一个结构化的numpy数组:

dtype = [('price', float), ('counter', int)]
values = [(35, 1), (36, 2),
          (36, 3)]
a = np.array(values, dtype=dtype)
如果价格相等,我想对价格进行排序,然后对计数器进行排序:

a_sorted = np.sort(a, order=['price', 'counter'])[::-1]
我需要按降序的价格,当价格相等时,考虑按升序排列。在上面的例子中,价格和计数器都是按降序排列的

我得到的是:

a_sorted: [(36., 3), (36., 2), (35., 1)]
我需要的是:

 a_sorted: [(36., 2), (36., 3), (35., 1)]
您可以使用:

结果:

array([(36.0, 2), (36.0, 3), (35.0, 1)], 
      dtype=[('price', '<f8'), ('counter', '<i4')])
数组([(36.0,2)、(36.0,3)、(35.0,1)],
数据类型=[(‘价格’,'
array([(36.0, 2), (36.0, 3), (35.0, 1)], 
      dtype=[('price', '<f8'), ('counter', '<i4')])