1.10. If Statements
どの言語でも条件を分岐するにはif文が使われる。pythonではforループと同じように、if文の最後に:をつけ、改行してインデントを入れて条件を書く。実行文にインデントを入れないとforループと同様、文法エラーになる
どの言語でも条件を分岐するにはif文が使われる。pythonではforループと同じように、if文の最後に:をつけ、改行してインデントを入れて条件を書く。実行文にインデントを入れないとforループと同様、文法エラーになる
繰り返し似たような作業を実行させるときには、forループを使う。書式は微妙に違うがC/C++やJava、その他の言語でも頻繁に使う構文だ。ただNumPyを上手に用いるとforループを使わなくても同じことができる場合が多く、実際のところforループを使わないでNumPyを利用した方が圧倒的に処理速度が速いので、NumPyに慣れてきたらなるべくforループを使わないように頭を働かせることをお勧めする。
行列や二次元配列が扱えるようになったので、行列の可視化や画像処理について紹介したい。matplotlibには可視化や画像処理に関する関数がいろいろと用意されている。 まずmoduleをimportする。
2次元以上の配列あるいは行列を表すのにも、1次元配列のときに紹介したndarrayを使う。2次元の場合[[]]のように括弧を二重にすることがポイントである。例でみてみよう。
データの可視化に便利なmoduleはたくさん存在するが、入門者向けにはmatplotlibが簡単で覚えやすいだろう。まずmoduleを読み込んで簡単なプロットをしてみる。
pythonの標準ライブラリー(python本体)には配列を扱うlistが用意されている。普通のアプリを作成する場合にはよく使うのだが、科学技術計算に使うためには、計算の利便性と高速化の面でlistは適さない。数値計算、科学技術計算用では、NumPyに用意されているndarrayというdata typeの配列が広く使われている。このndarrayは、行列、ベクトル計算用の高速アルゴリズムに最適化されていて、NumPyやSciPyで提供されるさまざまなfuntionが利用できる。さらにはデータ解析モジュールのPandasや機械学習モジュールのscikit-learnでもndarrayが使われているのでデータサイエンスでは必須の配列である。
python本体(標準ライブラリー)には、数学/物理に使える関数はほぼ何も定義されていないので、python本体だけでは数値計算はできない。一般的にコードを書くときにはpython本体だけでなく、さまざまなモジュール(module)を必要に応じて追加(インポート, import)していくことになる。数値計算では、NumPyという非常に強力な数値計算モジュールが用意されていて、数学で使える基本的な関数はほんどすべて揃っている。今後講義でコードを書くときは、ほぼ100%、NumPyを使うことになるし、pythonを使っている科学技術計算、機械学習を含むデータサイエンスでは常にNumPyを用いていると思っていい。それほど重要なモジュールである。
Pythonの変数にはいろいろなdata type(データ型)があるが、最も基本的なタイプとして int(整数) float(浮動小数点数) string(文字列) boolean(ブール) の4つがある。ある変数がどのtypeになっているかはtypeというfunctionで調べられる。
コードの中で、変数名 = 値 と書くと、メモリのどこかに「値」というデータが「変数名」(Variable)という名前がつけられて保存される。「変数」や「値」のこと(*や/などの演算子以外のもの)をコンピューターの用語でOperand(オペランド)という。なおpythonではどんな環境でもエラーメッセージは英語で表示されるので、プログラミングの基本英単語も覚える必要がある。本講義でも適宜英語を併記する。