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

Python 如何对包含numpy数组的元组列表进行排序?,python,arrays,sorting,numpy,Python,Arrays,Sorting,Numpy,首先,这是不起作用的代码: 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() 如您所见,我有一个元组列表(ls)。每个元组的第一个元素是一个浮点数。我尝试按ls.sort()对列表进行排序。在大多数情况下,它运行良好。但是,有时(如上面的示例中)我会使用与第一个元素值相同的元组。在本例中,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()
如您所见,我有一个元组列表(
ls
)。每个元组的第一个元素是一个浮点数。我尝试按
ls.sort()
对列表进行排序。在大多数情况下,它运行良好。但是,有时(如上面的示例中)我会使用与第一个元素值相同的元组。在本例中,python尝试使用元组的第二个元素对元组进行排序,但它不起作用,因为在元组的第二个位置,我有numpy数组


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

可能使用关键参数。这是你想要的吗

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对其进行排序

ls_arr = np.array(ls, dtype=[('my_val', float), ('my_arr', float, 2)])
ls_arr.sort()
第二个选项仅在数组长度始终相同时有效