假设我有以下列表
['foo', '333', 32.3]
['bar', 4.0]
['baz', '555', '2232', -1.9]
我希望能够通过最后一个元素( float )对其进行排序
['baz', '555', '2232', -1.9]
['bar', 4.0]
['foo', '333', 32.3]
按升序排列
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_array[:, 1])
最佳答案
我只会使用简单的 lists
在这里,当您创建 numpy.array
时使用不同长度的子列表(或 array
中的不同数据类型),您会得到 array
类型 object
,其中缺乏许多有用的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]]
关于Python numpy 参数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827706/