2017-11-13 13 views
1

numpy配列を持つ場合、各要素はさまざまな長さの異なるnumpy配列です(このためndarrayではありません)。どうすれば外側の配列を降順で並べ替えることができますか内部配列の長さ?例えばnumpy配列のnumpy配列を内部配列の長さで並べ替えます

a = np.array([np.array([1]), np.array([1, 2, 3]), np.array([1, 2])]) 

のようにソートされる:出力として配列の配列について

[[1, 2, 3], [1, 2], [1]] 
+0

この場合、単に 'list'オブジェクトを使用しないのはなぜですか?少なくとも、外側の物体として? –

答えて

2

代わりにリストの古いPythonの方法の長さを並べ替えて配列を再構築することもできます。

np.array(sorted(b, key=len, reverse=True)) 

NumPy-landに残っていると、おそらくここに何らかのメリットはありません。

1

-

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]] 
関連する問題