[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[ノート/ノート]]~
訪問者数 &counter(); 最終更新 &lastmod();
***Numpyでのソート [#wc6ae5a4]
Numpyで、arrayとして、多数のベクトルの集まりを持っているとする。
a = np.array([[1,4],[1,3],[2,2])
a
array([[1, 4],
[1, 3],
[2, 2]])
これを、3つの2次元ベクトルと見て、先ずx比較、xが同じならy比較、というようにして
ソートしたい。期待する結果は
[1, 3],
[1, 4],
[2, 2]
これは、np.sortでは、axisを0にしても1にしても、ダメである。
そこで、
np.array(sorted(a, key=lambda a_entry: a_entry[0]))
という、numpyでない、元のpythonのsortedを使ってみる。 最後のnp.arrayが必要な理由は、sortedの出力が、
[array([1, 3]), array([1, 4]), array([2, 2])]
のようになってしまうからである。これを、np.arrayでarrayに戻してやると
array([[1, 4],
[1, 3],
[2, 2]])
のようになる。
これは、比較のkey指定がa_entry[0]になっているので、これを複数書きたい。1つの方法として、
from operator import itemgetter
np.array(sorted(a, key=itemgetter(0,1)))
とすることができる。itemgetterで0番目と1番目をキーとする、ということらしい。
3次元でやるとすれば、
a = np.array([[3,1,1],[1,4,1],[1,1,7]])
とするとき、
np.array(sorted(a, key=itemgetter(0,1,2)))
でソートすると、キーは0,1,2番目の要素(この順で)であるから、結果は
array([[1, 1, 7],
[1, 4, 1],
[3, 1, 1]])
のようになる。
終了行:
[[ノート/ノート]]~
訪問者数 &counter(); 最終更新 &lastmod();
***Numpyでのソート [#wc6ae5a4]
Numpyで、arrayとして、多数のベクトルの集まりを持っているとする。
a = np.array([[1,4],[1,3],[2,2])
a
array([[1, 4],
[1, 3],
[2, 2]])
これを、3つの2次元ベクトルと見て、先ずx比較、xが同じならy比較、というようにして
ソートしたい。期待する結果は
[1, 3],
[1, 4],
[2, 2]
これは、np.sortでは、axisを0にしても1にしても、ダメである。
そこで、
np.array(sorted(a, key=lambda a_entry: a_entry[0]))
という、numpyでない、元のpythonのsortedを使ってみる。 最後のnp.arrayが必要な理由は、sortedの出力が、
[array([1, 3]), array([1, 4]), array([2, 2])]
のようになってしまうからである。これを、np.arrayでarrayに戻してやると
array([[1, 4],
[1, 3],
[2, 2]])
のようになる。
これは、比較のkey指定がa_entry[0]になっているので、これを複数書きたい。1つの方法として、
from operator import itemgetter
np.array(sorted(a, key=itemgetter(0,1)))
とすることができる。itemgetterで0番目と1番目をキーとする、ということらしい。
3次元でやるとすれば、
a = np.array([[3,1,1],[1,4,1],[1,1,7]])
とするとき、
np.array(sorted(a, key=itemgetter(0,1,2)))
でソートすると、キーは0,1,2番目の要素(この順で)であるから、結果は
array([[1, 1, 7],
[1, 4, 1],
[3, 1, 1]])
のようになる。
ページ名: