Pythonことはじめ

2018年11月29日

このブログでは、

  • 私がよく使うPythonコードについて、備忘録を兼ねた小ネタ集として紹介
  • コンピュータやプログラミングに関する独り言

を書こうと思う。

私のスキルに大きく依存した内容なので、Pythonの文法やその他の便利な使い方はQiitaやあちこちのブログを参照されたい。

Pythonを使い始めたきっかけ

2018年5月ごろから仕事で機械学習に取り組むことになり、プログラミング言語としてPythonを使いはじめた。

これまで、仕事で何らかのプログラムを実行した後の結果チェックやデータ処理など、ちょこっとしたユーティリティはほぼPERLで書いていた。PERL歴は約25年。しかし、PERLでオブジェクト指向なプログラミングはしたことがない(C++やC#でclass使ってプログラミングしたことはある)

AI・機械学習や科学技術計算の分野ではPythonがよく使われる。その理由をよく聞かれ、調べるとたくさん出てくるが、私が感じたメリット・デメリットは次の通り。

Python言語のメリット

  • インタープリタ方式なのでとっつきやすい
  • NumPy, matplotlib, Pandasなどのライブラリが充実している

やっぱり、NumPyの高速な行列演算は機械学習には欠かせない。

あと、実験データをグラフにしたり、画像を並べるのにmatplotlibはとても重宝している。PandasでデータをCSVに出力し、Excelでグラフを書いていたが、何度もグラフを手動で作るのが面倒になり、最近はもうmatpltlibのfigureでグラフを書き、PNG/JPGにしてPowerPointに貼りつけている。

Python言語のデメリット

フォーマットフリーな言語とemacsに慣れた私にとって

  • インデントによるスコープの定義ルールがコーディングする際に面倒

と感じる。というのも、既に書いた処理をif文やfor文の中に入れる際、インデントを変更しないといけないから。

普段emacsでコーディングしているが、それまでの構造を変えずにインデントを一段増やす方法がわからないので、チマチマ一行ずつ[TAB]キーでインデントを増やし、行き過ぎたインデント[BackSpace]で戻す、という地道な作業を強いられている。

CやPerlなら、{ にカーソルを置いて、M-qで{}ブロック内をインデントし直してくれるので楽ちんなのに…。viなら範囲指定+[>][>]で楽にインデント変更できるんだろうか?