エレガントなSciPy
――Pythonによる科学技術計算

[cover photo]
  • 2018年11月 発行
  • 272ページ
  • ISBN978-4-87311-860-4
  • フォーマット Print PDF
  • 原書: Elegant SciPy: The Art of Scientific Python

オライリー・ジャパンで書籍を購入:
定価3,672円

Ebook Storeで電子版を購入:
価格2,938円

豊富な科学関連、数学関連のライブラリを持つPythonは、多くの科学技術分野で使われています。本書では、SciPyの使い方とその威力を紹介するだけでなく、実際の科学データとNumPy、pandas、Matplotlib、IPython、Jupyterノートブック、scikit-learn、scikit-imageといったライブラリやツールを利用して実際の問題を解決する作業を通じて、数学的計算の基礎となるデータ構造のNumPy配列を使いこなし、科学技術計算の明確かつ簡潔かつ効率的でエレガントなコードの書き方を学ぶことができます。掲載コードとデータ、環境、ツールはすべて本書のGitHubから利用可能です。Python 3対応。

関連書籍

IPythonデータサイエンスクックブック
Pythonデータサイエンスハンドブック
Pythonによるデータ分析入門 第2版
詳解 OpenCV 3

まえがき

1章 エレガントなNumPy:科学Pythonの基礎
    1.1 データの紹介:遺伝子発現とは
    1.2 NumPyのN次元配列
        1.2.1 Pythonのリストでなくndarrayを使う理由
        1.2.2 ベクトル化
        1.2.3 ブロードキャスティング
    1.3 遺伝子発現データセットの探索
        1.3.1 pandasを使ってデータを読み込む
    1.4 正規化
        1.4.1 標本間の正規化
        1.4.2 遺伝子間の正規化
        1.4.3 標本間と遺伝子間の正規化:RPKM
    1.5 まとめ

2章 NumPyとSciPyを用いた分位数正規化
    2.1 データの取得
    2.2 遺伝子発現分布の標本差
    2.3 リード数データのバイクラスタリング
    2.4 クラスタの可視化
    2.5 生存率予測
        2.5.1 追加の課題:TCGAの患者クラスタを使用する
        2.5.2 追加の課題:TCGAのクラスタを再現する

3章 ndimageを使った画像領域のネットワーク
    3.1 画像は単なるNumPy配列
        3.1.1 演習:グリッドオーバーレイを追加する
    3.2 信号処理で使うフィルタ
    3.3 画像のフィルタリング(2次元フィルタ)
    3.4 汎用フィルタ:近傍データの任意の関数
        3.4.1 演習:Conwayのライフゲーム
        3.4.2 演習:ソーベル勾配の大きさ
    3.5 グラフとNetworkXライブラリ
        3.5.1 演習:SciPyを使った曲線回帰
    3.6 領域隣接グラフ
    3.7 エレガントなndimage:画像領域からグラフを構築する方法
    3.8 すべてのまとめ:平均の色を用いた領域分割

4章 周波数と高速フーリエ変換
    4.1 周波数とは
    4.2 応用例:鳥のさえずりのスペクトログラム
    4.3 歴史
    4.4 実装
    4.5 DFTの長さを決定する
    4.6 さらなるDFTの概念
        4.6.1 周波数とその並び順
        4.6.2 窓を掛ける
    4.7 実世界の応用例:レーダデータの解析
        4.7.1 周波数領域の信号特性
        4.7.2 窓を掛ける:応用編
        4.7.3 レーダ画像
        4.7.4 FFTの他の応用例
        4.7.5 参考文献
        4.7.6 演習:画像の畳み込み

5章 疎行列を用いた分割表
    5.1 分割表
        5.1.1 演習:対応行列の計算複雑性
        5.1.2 演習:対応行列を計算する別のアルゴリズム
        5.1.3 演習:多クラス対応行列
    5.2 scipy.sparseのデータ形式
        5.2.1 COO形式
        5.2.2 演習:COOを使った表現
        5.2.3 CSR形式
    5.3 疎行列の適用例:画像変換
        5.3.1 演習:画像の回転
    5.4 分割表再び
        5.4.1 演習:必要なメモリ容量を減らす
    5.5 セグメンテーションにおける分割表
    5.6 情報理論の概要
        5.6.1 演習:条件付きエントロピーの計算
    5.7 セグメンテーションにおける情報理論:情報変化量
    5.8 疎行列を使うようにNumPy配列のコードを変換する
    5.9 情報変化量の使い方
        5.9.1 追加の課題:セグメンテーションの実践

6章 SciPyで行う線形代数
    6.1 線形代数の基本
    6.2 グラフのラプラシアン行列
        6.2.1 演習:回転行列
    6.3 脳データのラプラシアン
        6.3.1 演習:神経細胞の接続の近さを表す図を描く
        6.3.2 チャレンジ問題:疎行列を扱う線形代数
    6.4 ページランク:評判と重要度のための線形代数
        6.4.1 演習:ぶら下がりノードの処理法
        6.4.2 演習:異なる固有ベクトルの手法の等価性
    6.5 まとめ

7章 SciPyを使って関数を最適化する
    7.1 SciPyの最適化関数:scipy.optimize
        7.1.1 事例:画像の最適な移動距離を計算する
    7.2 optimizeを使った画像のレジストレーション
    7.3 ベイスン-ホッピング法で極小値を避ける
        7.3.1 演習:align関数を修正する
    7.4 「何が最適か?」:適切な目的関数の選び方

8章 Toolzを使って小さなノートパソコンでビッグデータを処理する方法
    8.1 yieldを使ったストリーミング
    8.2 ストリーミングライブラリToolzの紹介
    8.3 k-merのカウントとエラー補正
    8.4 カリー化:ストリーミングのスパイス
    8.5 k-merのカウント再び
        8.5.1 演習:ストリーミングデータの主成分分析(PCA)
    8.6 全ゲノムを基にマルコフモデルを作成する
        8.6.1 演習:オンラインで実行するunzip

付録 演習の解答
    A.1 解答:グリッドオーバーレイを追加する
    A.2 解答:Conwayのライフゲーム
    A.3 解答:ソーベル勾配の大きさ
    A.4 解答:SciPyを使った曲線回帰
    A.5 解答:画像の畳み込み
    A.6 解答:対応行列の計算複雑性
    A.7 解答:対応行列を計算する別のアルゴリズム
    A.8 解答:多クラス対応行列
    A.9 解答:COOを使った表現
    A.10 解答:画像の回転
    A.11 解答:必要なメモリ容量を減らす
    A.12 解答:条件付きエントロピーの計算
    A.13 解答:回転行列
    A.14 解答:神経細胞の接続の近さを表す図を描く
        A.14.1 チャレンジを受けて立つ:疎行列を扱う線形代数
    A.15 解答:ぶら下がりノードの処理法
    A.16 解答:手法の検証
    A.17 解答:align関数を修正する
    A.18 解答:scikit-learnライブラリ
    A.19 解答:パイプの最初の部分に1段階追加する

エピローグ
    E.1 次の目標
        E.1.1 メーリングリスト
        E.1.2 GitHub
        E.1.3 カンファレンス
    E.2 SciPyの向こう
    E.3 本書に寄与する方法
    E.4 また会う日まで

索引

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]