我想根据它们的长度对我拥有的 NumPy 数组中的子数组进行排序

I want to sort the subarrays in a NumPy array that I have according to their length

我想根据长度对 NumPy 数组中的子数组进行排序。

例如我的数组是

myArray = [[1,2,3,4,5,6,7],
           [8,9,10,11],
           [12],
           [13],
           [14,15,16,17,18,19,20,21,22,23,24]]

我想将它们排序为

myArray = [[14,15,16,17,18,19,20,21,22,23,24],
           [1,2,3,4,5,6,7],
           [8,9,10,11],
           [12],
           [13]]

有什么可行的方法吗?

我的子数组的内容应该不会改变。

这是一个简单的列表列表 - 做你需要的:

sorted(myArray, key=lambda x: -len(x))

FOLLOW UP:如果你有一个numpy数组,如下:

myArray = np.array([np.array(x) for x in [[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11], [12], [13], [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]]])

你可以得到类似的结果:

np.array([y for x,y in sorted([(-len(x), x) for x in myArray])])

输出:

array([array([14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]),
   array([1, 2, 3, 4, 5, 6, 7]), array([ 8,  9, 10, 11]), array([12]),
   array([13])], dtype=object)