[英]Sort a numpy array of numpy arrays by lengths of the internal arrays
如果我有一個numpy數組,每個元素是另一個不同長度的numpy數組(因為這不是一個ndarray),我如何通過內部數組的下降長度對外部數組進行排序?
例如:
a = np.array([np.array([1]), np.array([1, 2, 3]), np.array([1, 2])])
將被排序為:
[[1, 2, 3], [1, 2], [1]]
另一種方法是按照舊的Python方式對列表進行排序,然后重構數組。
np.array(sorted(b, key=len, reverse=True))
保留NumPy-land可能無論如何都不會為您提供任何好處。
對於數組數組作為輸出 -
a[np.argsort([len(i) for i in a])[::-1]]
樣品運行 -
In [329]: a
Out[329]: array([array([1]), array([1, 2, 3]), array([1, 2])], dtype=object)
In [330]: a[np.argsort([len(i) for i in a])[::-1]]
Out[330]: array([array([1, 2, 3]), array([1, 2]), array([1])], dtype=object)
# If you need a list of lists as output
In [341]: [i.tolist() for i in _]
Out[341]: [[1, 2, 3], [1, 2], [1]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.