Python numpy 参数排序

标签 python list sorting numpy

假设我有以下列表

['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/

相关文章:

python - 如何在 Python 3 中像在 Python 2 中一样将 chr(0xdfff) 转换为 utf-8 字节?

python - 为什么我的电脑上已经有camelot却找不到camelot?

list - 如何在 ELisp 中插入列表的中间?

javascript - 循环对象数组并根据键值对的匹配集进行过滤/排序/分组。

python - 如何在 numpy 数组的元素之间插入零?

python - .bash_profile.pysave 究竟是什么?

python - 列表有 str.join() 吗?

python - 使用字典将 "sequential"信息添加到 python 列表

python - 不比较单个数字Python的排序方法

Python 3.6——排序的元组集