バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
非極大値抑制をプログラムを作成しているときに出てきた、
線形インデックスサーチと論理インデックスサーチについて説明。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
各ツールで各インデックスサーチ
前回で、各ツール、各言語でインデックスサーチを試したけど、
なんか一覧表とかあるといいんだけどなー。
(それは私に一覧表をつくれってことなのか?)
(「そう思って作っておいたよ!」とか言わねぇかなぁ・・・)
(・・・)
(・・・)
(・・・)
(・・・)
そういうわけで一覧表をt
やだよ。
まだ最後までしゃべってないじゃん!
かぶせ気味で拒否しなくてもいいじゃん!
自分で作りなよ。
ちゃんとまとまってるかは見てあげるから。
むぅ。やるしかないのか・・・。
各ツールで各インデックスサーチ一覧表
というわけで作ったけど・・・。
論理index方式 | 線形index方式 | 備考 | |
---|---|---|---|
MATLAB | A(評価式ベクトル) | A(find(評価式)) | |
Python | A[評価式ベクトル] | A[np.where(評価式)] | NumPyの場合 |
Scilab | A(評価式ベクトル) | A(find(評価式)) | |
Julia | A[評価式ベクトル] | A[findall(評価式)] |
うん。
いいんじゃないかな。
線形インデックスの方はもっと細かい指定方法はあるが、
findを使用したパターンを書いておけば、まぁ大丈夫だろう。
悩んだ場合は、これ見てやればOKかな。
そんな感じで日頃から情報を整理するようにしておくと良いね。
(上司みてぇなこと言いやがるな・・・)
余談
余談だが、データベース等で使用するSQLも似たような書き方はあるね。
ほう?
こんな書き方。
SELECT * FROM customer WHERE id_c >= 2 AND id_c <= 4;
WHERE句と言って、これで特定範囲のテーブルを参照可能になる。
NumPyのwhereはここから来てるのかな?
その可能性はあるな。
NumPy以外にもコンテナライブラリはwhereで特定要素の抜き出しをしていることは多いな。
C#のLINQなんかも一緒だろう。
そういうのを知ってると、異なる環境でも同じことができそうか確認するようになるね。
そうそう。
便利機能は使わないと損だからね。
まとめ
まとめだよ。
- 各ツール、各言語における論理インデックスサーチと線形インデックスサートの一覧表を作成。
- SQLやコンテナライブラリにも似たような機能が実装されていることが多いので、仕様を確認しておくと楽ができる。
バックナンバーはこちら。
コメント