ここでは数値計算に必要なPythonの基礎を学びます。
1.1. AnacondaとJupyterLab
最初にプログラミング環境を整える必要がある。webアプリやスマホアプリ、デスクトップアプリを作りたい人、他の言語に慣れている人などは、pythonの公式www.python.org からpythonをダウンロードして自分で環境を整えるのもいいし、有料無料の各種統合開発環境(Visual Studio, VS Code, PyCharm等)をインストールするのもいいだろう。ただし、本講義のように数値計算やデータサイエンスのみをターゲットにする場合は、Anacondcaというディストリビューションで環境を構築するのがお手軽なので、本講義ではAnacondaを使って環境を構築する。
1.2. Variables
コードの中で、変数名 = 値 と書くと、メモリのどこかに「値」というデータが「変数名」(Variable)という名前がつけられて保存される。「変数」や「値」のこと(*や/などの演算子以外のもの)をコンピューターの用語でOperand(オペランド)という。なおpythonではどんな環境でもエラーメッセージは英語で表示されるので、プログラミングの基本英単語も覚える必要がある。本講義でも適宜英語を併記する。
1.3. Python Data Types
Pythonの変数にはいろいろなdata type(データ型)があるが、最も基本的なタイプとして int(整数) float(浮動小数点数) string(文字列) boolean(ブール) の4つがある。ある変数がどのtypeになっているかはtypeというfunctionで調べられる。
1.4. NumPy/SciPy
python本体(標準ライブラリー)には、数学/物理に使える関数はほぼ何も定義されていないので、python本体だけでは数値計算はできない。一般的にコードを書くときにはpython本体だけでなく、さまざまなモジュール(module)を必要に応じて追加(インポート, import)していくことになる。数値計算では、NumPyという非常に強力な数値計算モジュールが用意されていて、数学で使える基本的な関数はほんどすべて揃っている。今後講義でコードを書くときは、ほぼ100%、NumPyを使うことになるし、pythonを使っている科学技術計算、機械学習を含むデータサイエンスでは常にNumPyを用いていると思っていい。それほど重要なモジュールである。
1.5. 1D Array
pythonの標準ライブラリー(python本体)には配列を扱うlistが用意されている。普通のアプリを作成する場合にはよく使うのだが、科学技術計算に使うためには、計算の利便性と高速化の面でlistは適さない。数値計算、科学技術計算用では、NumPyに用意されているndarrayというdata typeの配列が広く使われている。このndarrayは、行列、ベクトル計算用の高速アルゴリズムに最適化されていて、NumPyやSciPyで提供されるさまざまなfuntionが利用できる。さらにはデータ解析モジュールのPandasや機械学習モジュールのscikit-learnでもndarrayが使われているのでデータサイエンスでは必須の配列である。
1.6. Graphs
データの可視化に便利なmoduleはたくさん存在するが、入門者向けにはmatplotlibが簡単で覚えやすいだろう。まずmoduleを読み込んで簡単なプロットをしてみる。
1.7. 2D Array
2次元以上の配列あるいは行列を表すのにも、1次元配列のときに紹介したndarrayを使う。2次元の場合[[]]のように括弧を二重にすることがポイントである。例でみてみよう。
1.8. 2D plots
行列や二次元配列が扱えるようになったので、行列の可視化や画像処理について紹介したい。matplotlibには可視化や画像処理に関する関数がいろいろと用意されている。 まずmoduleをimportする。