Python numpy argsort

Python numpy argsort,python,list,sorting,numpy,Python,List,Sorting,Numpy,假设我有以下列表 ['foo', '333', 32.3] ['bar', 4.0] ['baz', '555', '2232', -1.9] 我希望能够通过最后一个元素(float)对其进行排序 按升序 count_array = np.array([('foo', '333', 32.3),('bar', 4.0),('baz', '555', '2232', -1.9)], dtype = np.object) idx = np.argsort(count_array[:, 1])

假设我有以下列表

['foo', '333', 32.3]
['bar', 4.0]
['baz', '555', '2232',  -1.9]
我希望能够通过最后一个元素(float)对其进行排序

按升序

count_array = np.array([('foo', '333', 32.3),('bar', 4.0),('baz', '555', '2232', -1.9)], dtype = np.object)

idx = np.argsort(count_array[:, 1])

print(count_array[idx])
我希望能够通过比较二维列表的最后一个元素对其进行排序。此代码仅在子列表长度相同时有效

如何使其适用于可变长度子列表

问题是这一行
idx=np.argsort(count\u数组[:,1])

当您创建一个具有不同长度的子列表(或
数组中的不同数据类型)的
numpy.array
时,我会在这里使用普通的
列表
,您会得到一个
对象类型的
数组
,它缺少许多有用的
numpy
特性,很少是一个好的实现方法

x = [['foo', '333', 32.3],
     ['bar', 4.0],
     ['baz', '555', '2232',  -1.9]]

result = sorted(x, key=lambda k : k[-1], reverse=True)
结果:

>>> result
[['foo', '333', 32.3], ['bar', 4.0], ['baz', '555', '2232', -1.9]]
>>> result
[['foo', '333', 32.3], ['bar', 4.0], ['baz', '555', '2232', -1.9]]