書籍に関連したアップデート情報

Spyder 3.3.0がリリース

Spyder 3.xではメニューが日本語対応に!

本書執筆時点では、Spyderのメニューは日本語対応していませんでしたが、 Spyder 3.3.0(2018年7月6日リリース)以降から、GUIのメニューなどが日本語化されました。最新版のAnaconda(2017年2月時点で Anaconda 5.2)をインストールすると、Spyder 3.2.8がインストールされ、日本語化されたSpyderが 使えます。筆者が試してみると、最初から日本語設定になってくれましたが、言語は設定メニューから選択 できるので、インストール後に英語のメニューになっている場合は、自分で設定変更すれば日本語になります。

Spyder 3.xではライトモードが廃止に!

GUIは最小限にとどめておきたい方には好まれていた、ライトモード(light mode)が廃止となりました。 『科学技術計算のためのPython入門――開発基礎、必須ライブラリ、高速化』のでは、p.92~93で ライトモードの紹介をしています。Spyderのバージョン3.xでは、このライトモードが使えなくなります。

AnacondaはPython 3.6系へ移行

本書の執筆時点(2016年9月)では、ディストリビューションパッケージのAnacondaは4.2が最新で、 Python 3.5が採用されていました。しかし、2017年2月にリリースされたAnaconda 4.3.0では、 Python 3.6が採用されています。Python 3.6でも、基本的に本書のプログラムを動かす うえで問題はありません。2018年7月時点の最新のAnacondaは5.2で、Python 3系のパッケージでは Python 3.6.5が使われています。Python本体よりも、ライブラリのバージョンによって何らかの問題が 生じる可能性がありますが、そのような場合は 出版元のサポートページ からお問い合わせください。

Windows向けでは、Python本体(CPython)のコンパイルに使われているC/C++コンパイラのバージョンはPython 3.5と同じです。したがって、 C/C++コンパイラを変更することなく、Python 3.6のAnaconda 4.3.0に移行できます。

なお、Anaconda 5.2に使われている主要パッケージのバージョン(Windows 64bit向けの例)は、 以下の表のとおりです。

サンプルコードのアップデート

本書で掲載しているサンプルコードの中には、最新のパッケージではサポート終了(Deprecated) となっている関数が使われている場合があります。ここでは、そのような例の代替サンプルコードを 紹介します。

リスト9.7 : matplotlib.mlab の bivariate_normal

本書283~284ページに記載の等高線図の例(リスト9.7)では、matplotlib.mlab の bivariate_normal という 関数を使っています。matplotlibのmlabというモジュールは、MATLABと互換性のある関数を 同じ名前で実装するために用意されたものですが、一部の関数はNumPyやSciPyと機能が重複している こともあり、matplotlib 2.2以降ではサポート終了となっています。

そこで、リスト9.7の例を、SciPyのstatsモジュールに含まれる関数で 書き直した例を以下に示します。この例のように、サポート終了となった関数にはほぼ必ず代替の関数が 存在しますので、必要に応じて調査してみてください。本書のサポートページでも、順次、 代替の関数を使った書き直し例を紹介していきます。

# -*- coding: utf-8 -*-

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import cm
from scipy.stats import multivariate_normal

# Matplotlibのプロットのオプション設定
mpl.rcParams['axes.grid'] = True
mpl.rcParams['grid.linestyle'] = "--"
mpl.rcParams['grid.color'] = "black"

# 2次元メッシュを作成
#   元のサンプルコードの「X, Y = np.meshgrid(x, y)」と同じ処理を以下で行う
Y, X = np.mgrid[-2.0:2.0:200j, -3.0:3.0:200j]

# 2変量正規分布で2次元分布データを作成
mvn_1 = multivariate_normal([0.0, 0.0], [[1.0, 0.0], [0.0, 1.0]])
mvn_2 = multivariate_normal([1.0, 1.0], [[1.5**2, 0.0], [0.0, 0.5**2]])
pos = np.dstack((X, Y))
z = 15 * (mvn_1.pdf(pos) - mvn_2.pdf(pos))  # pdf() : 確率密度関数を呼び出すメソッド

# --- プロットを作成
plt.figure(1)
plt.clf()
# ❶zの値を濃淡の画像として表示
im = plt.imshow(z, interpolation='bilinear', origin='lower',
                cmap=cm.gray, extent=(-3, 3, -2, 2))
# ❷等高線を表示
levels = np.arange(-2.5, 2.5, 0.5)
ctr = plt.contour(z, levels, colors='k', origin='lower',
                  linewidths=2, extent=(-3, 3, -2, 2))
# ❸等高線にラベルをインライン表示
plt.clabel(ctr, levels, inline=1, colors='black', fmt='%1.1f', fontsize=14)
plt.show()