Anaconda 学習:インデックスソート

2018-01-19 :  PCクリニック
4年前(2014-04-07)に「Python 学習:インデックスソート」を書いている。

今回、
OpenCV 即ち
先日(2018-01-08)の記事「Anaconda2_x64 本格導入」で書いた
opencv3 ( 3.2.0 )
を使ったらどうなるか?

学習した。


当時のコードは、
x = [ 1, 6, 3, 8, 4 ]
t = sorted( range(len(x)), key=lambda k: x[k] )
# ----- t[] はインデックス
# ----- 実際の並べ替え結果は、
y = [x[t[i]] for i in range(len(x))]
でしたが、・・・・・


“OpenCV 2.4.13.5 documentation”の
cv2.sortIdx (Python function, in Operations on Arrays)

  Sorts each row or each column of a matrix.

  cv2.sortIdx( src, flags[, dst] ) → dst

   ・src - input single-channel array.
   ・dst - output array of the same size and type as src.
   ・flags - operation flags, a combination of the following values:
        ・・・・・

これは、cv2.sort と違って、
  Instead of reordering the elements themselves,
  it stores the indices of sorted elements in the output array.
すなわち、
  要素自体を並べ替える代わりに、
  並べ替えられた要素のインデックスを出力配列に格納します。


と云うことで、
import  cv2
import numpy as np
x = np.array( [ 1, 6, 3, 8, 4 ] )
t = cv2.sortIdx( x, 1 ) ### 昇順の場合( 降順では、17 )
# ----- t[] はインデックス
# ----- 実際の並べ替え結果は、
y = [ x[t[i,0]] for i in range(len(x)) ]
ですネ。


これ ( NumPyOpenCV ) を使うと、

どんな(?)データ型のアレイ(配列)についても
“ソート”=“並べ替え”をやれますネ。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


171231
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2018/05 | 06
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク