Pythonによる信号処理プログラミング

Last update: 2018/08/26

なぜPython?

科学技術計算では、Matlabが広く使われており、数値計算からグラフィックスまで、必要なものがMatlabの閉じた環境で提供されています。一方で、データの規模が大きくなり(いわゆるビッグデータ)、形式も多様化して、さらにそれがwebに分散しておいてある、というような環境では、必ずしも使いやすい環境とはいえません。

一方、Pythonは、C++/Javaとともに3大言語呼ばれていますが、日本での知名度は他の2つに比べると、まだ低いようです。私の知る範囲で、対象を科学技術計算にしぼって、C++とPythonを比較してみると、Pythonのメリットは、プログラムの読みやすさ(可読性)と、開発効率の高さにあります。

C++と比較すると、Pythonは言語仕様がかなり少なく、短時間で習得できます。それでは、Pythonの多様な機能は、何によってもたらされるかというと、豊富なモジュール・ライブラリです。科学技術計算では、Numpy(行列計算基本ライブラリ)、Scipy(様々な科学技術計算)、Matplotlib(グラフィックス)などがフリーのライブラリとして提供されています。これらのライブラリはSciPy.orgからダウンロード可能であり、ドキュメントも充実しています。また、機械学習については、scikit-learnというライブラリがあり、機械学習の基本的なアルゴリズムは網羅されています。

続いて、開発環境について見てみると、インタラクティブシェルであるIPythonや、Spyder/Jupyter notebookを用いることにより、Matlabの基本プラットフォームと同じような使い勝手が実現されています。PythonもMatlabと同じくインタープリタ型であり、プロトタイプ作成のように、試行錯誤しながらプログラムを開発するのに向いています。また、Matlabと同じように、プログラムを走らせた後で、変数の中身を表示したり、図に書いたりすることもできます(Spyder)。このような開発環境は、科学技術計算のプログラミングでは大きな利点であり、開発効率は、C++に比べ、はるかに高いと感じます。一方で、インタープリタは、一般に実効速度は遅いですが、PythonのモジュールライブラリはC++/Javaで実装されており、これらを多用することにより、スピードの低下は、それほど大きなものではないでしょう。この意味から、Pythonはグルー言語(glue language、モジュールを張り合わせる糊)であるとも言われます。

インストール

Pythonの科学技術ライブラリ環境Anacondaのインストールはこちらから

データとライブラリ

このサイトのサンプルプログラムで使用しているデータとライブラリは、こちらからダウンロードできます。

ダウンロード