書評:『行列プログラマー』


2016年 11月 21日

CodingTheMatrixJP.gif行列プログラマー
――Pythonプログラムで学ぶ線形代数

Philip N. Klein 著
松田 晃一、弓林 司、脇本 佑紀、中田 洋、齋藤 大吾 訳
2016年10月 発行
688ページ、5400円(本体)
オライリー・ジャパン
ISBN978-4-87311-777-5




副題にPythonとあるので、Pythonで行列の計算処理をしっかりやるための本と受け取るのが普通と思うが、本書はそういう本ではない。
Pythonプログラミングの本というより、数学書に相当近い。

行列といえば、当然NumPyを使い倒すPythonプログラマ養成本と考えてしまうのだが、本書ではNumPyについては書かれていない。

数学書といったように、コードは含まれているのだが、それよりも数学、行列をしっかり教える本で、通常の行列計算以外にも、行列はいろりろ使い道があるなどの話題が多い。

逆に、普通のPythonの本ではあまり説明の無い内包についてはしつこく出てくる。
普通だったら、for文を使って、その後インデントしてという感じになるようなことを、内包を使って、ちょろっとコーディングしてしまおうという方針のようだ。そして、内包というのは、数学の表記と同じなので、とてもなじみやすいと書いてある。
といっても、それは数学者にとって、日常的な書き方がそのままPythonにも使えて便利ということで、普通の数学が苦手なプログラマには逆効果かも知れない。

本書の課題では、内包を使ってプログラムせよというのが多い。これをやっていると、次第に、def、:(コロン)、字下げなどが無いプログラムを書くようになり、Pythonらしくなくなる。

lambda関数も詳しく説明しているかと思ったら、こちらは入っていなかった。残念である。
内包とlambda関数を使い倒すと面白いと思うのだが。

ということで、本書は、かなり毛色の変わったPythonの本で、線形代数学にプログラミングが付加された本である。

プログラミングの普通でない側面を勉強したい場合には役に立つが、普通にPythonのプログラムを勉強しよう、Deep Learning の準備としてPythonの本を読もうと言う場合は、絶対に他書を読むべし。

―――と書いたが、まだ4割くらいしか読んでいない。