2017-12-11 16 views
0

argmin()を使用して昇順で配列を並べ替えるにはどうすればよいですか?私はargmin()を使用してxの昇順に返すsort_function(x)を定義して行うたとえばargmin()を使用して配列を並べ替える方法

print(sort_function(np.array([1,6,3,7])) 

結果は[1 3 6 7]であるべきです。ここで

+0

あなたの質問です* "どうすればこの' sort_function'を定義できますか? " –

+1

あなたは 'argsort'ではなく' argmin'でこれをしてもよろしいですか? –

+0

_only using_とは​​どういう意味ですか?多かれ少なかれソートalgoを取って、 'x> y'を' np.argmin((x、y)) 'に置き換えることができます。私はそれを数えないだろうか? –

答えて

5

それは、速いO(N ** 2)燃えるにされる - リストが空になるまで、リスト

    1. コールnp.argminをそのインデックス
    2. 繰り返しの要素をポップ
    def sort_function(x): 
        y = list(x) 
        while y: 
         yield y.pop(np.argmin(y)) 
    
    list(sort_function(np.array([1, 6, 3, 7]))) 
    [1, 3, 6, 7] 
    
  • +1

    ああ!それは速い – Dark

    +0

    だったか、 'return [y.pop(np.argmin(y)for _ in x]' –

    +1

    @Darkを返すことに注意してください。これは並べ替えを行う本当に愚かな方法です。 –

    関連する問題