簡體   English   中英

按內部數組的長度對numpy數組的numpy數組進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM