我想根据它们的长度对我拥有的 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)
我想根据长度对 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)