如何对包含numpy数组的元组列表进行排序?

2024-04-27 00:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,这是不起作用的代码:

ls = [(1.0,np.array([3.0, 4.0])), (1.0,np.array([3.0, 4.1])), (3.0,np.array([2.0, 1.0]))]
ls.sort()

{I>你可以看到{1元组列表)。每个元组的第一个元素是一个浮点数。我试图按ls.sort()对列表进行排序。在大多数情况下,它工作得很好。但是,有时(就像上面的例子中一样)我有一个元组,它们的第一个元素的值相同。在本例中,python尝试使用tuple的第二个元素来对tuple进行排序,但是它不起作用,因为在tuple的第二个地方我有numpy数组。在

如何通过忽略元组的第二个元素对列表进行排序?如果第一个元素是相同的,我不关心排序(可以是原始排序,也可以是随机排序)。在


Tags: 代码元素列表排序地方np情况sort
2条回答

可能是用key参数。这是你想要的吗?在

import numpy as np
ls = [(1.0,np.array([3.0, 4.0])), (1.0,np.array([3.0, 4.1])), (3.0,np.array([2.0, 1.0]))]
ls.sort(key=lambda x: x[0])

或者告诉python只对第一项进行排序

sorted(ls, key=lambda t: t[0])

或者把整个过程转换成一个结构化的numpy数组,然后让numpy对它进行排序

^{pr2}$

第二个选项仅在数组的长度始终相同的情况下有效。在

相关问题 更多 >