np.argsort(arr)
もできますし、arr.sort()
もできますよ。
argsort
の方はどちらの書き方でも処理に違いはないみたいですが~~(厳密な部分は違うのだろうか?)~~※、sort
の方には違いがあります。
np.sort(arr)
-> 返り値が並べ替えられた新しいオブジェクトになる。元の配列には変化なし。
arr.sort()
-> 配列そのものの中身を並べ換える。返り値は**None
**
以下違いを示すコードです。
python
1import numpy as np
2
3arr_a = np.array([6,1,5,2,4,3])
4arr_b = np.sort(arr_a)
5
6print('np.sort(arr_a) :')
7print('arr_a :',arr_a)
8print('arr_b :',arr_b)
9
10arr_a.sort()
11
12print('\narr_a.sort() :')
13print('arr_a :',arr_a)
実行結果
np.sort(arr_a) :
arr_a : [6 1 5 2 4 3]
arr_b : [1 2 3 4 5 6]
arr_a.sort() :
arr_a : [1 2 3 4 5 6]
追記 ※の部分について
こういうときに「同じだけど違う」という言葉を使いたくなってしまいますね。(^ ^;
全く等価なのは、mkgrei様も挙げておられる、
arr.argsort()
とnp.argsort(arr)
ですね。これらは全く同じです。というかarr.argsort()
が内部的にはnp.argsort(arr)
になる、と言った方がいいのでしょうか?
しかし、クラスメソッドであるnp.argsort()
自体は**numpy.ndarray
オブジェクト以外の配列**も引数に取ることができます。それが唯一の違いです。
python
1print(np.argsort([6,1,5,2,4,3])) # => [1 3 5 4 2 0] このように普通のリストも引数にとれる
2[6,1,5,2,4,3].argsort() # => AttributeError
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/10 05:44
2018/01/10 05:57
2018/01/10 06:36
2018/01/10 07:02