MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
の、
MATLAB,Python,Scilab,Julia比較 第3章 その49【インデックスサーチ⑤】
非極大値抑制をプログラムを作成しているときに出てきた、
線形インデックスサーチと論理インデックスサーチについて説明。
各ツールで各インデックスサーチ一覧表
2種類のインデックスサーチ。
4種類の環境。
というわけで一覧表が欲しくなる。
よって作成してみた。
論理index方式 | 線形index方式 | 備考 | |
---|---|---|---|
MATLAB | A(評価式ベクトル) | A(find(評価式)) | |
Python | A[評価式ベクトル] | A[np.where(評価式)] | NumPyの場合 |
Scilab | A(評価式ベクトル) | A(find(評価式)) | |
Julia | A[評価式ベクトル] | A[findall(評価式)] |
どれも似たような方式ではあるが、
find関連の関数が異なるところに注意が必要。
また、Juliaに関しては、各所で”.”演算子によるブロードキャストが必要になる。
この点も注意した方が良いだろう。
余談
余談だが、データベース等で使用するSQLも似たような書き方はある。
このような書き方になる。
SELECT * FROM customer WHERE id_c >= 2 AND id_c <= 4;
WHERE句と呼ばれるもので、これで特定範囲のテーブルを参照可能になる。
NumPyのwhereメソッドは恐らくここからきているものと思われる。
NumPy以外にもコンテナライブラリはwhereメソッドで特定要素の抜き出しをしていることは多い。
例えば、C#のLINQなどもこの方式である。
こういうことのを知ってると、異なる環境でも同じことができそうか確認できるようになる。
便利機能は使わないと損。
ベクトル、行列、コンテナ関連を操作する場合は一旦確認してみると良いだろう。
まとめ
- 各ツール、各言語における論理インデックスサーチと線形インデックスサートの一覧表を作成。
- SQLやコンテナライブラリにも似たような機能が実装されていることが多いので、仕様を確認しておくと楽ができる。
MATLAB、Python、Scilab、Julia比較ページはこちら
コメント