November 2015
Intermediate to advanced
360 pages
6h 16m
Japanese
numpyを用いるとPythonだけを使って書くよりも数値計算の効率がよい理由は何か?コンピュータで解決しようとする問題がなんであろうと、どこかでベクトルの計算が絡むものです。ベクトルの計算は、コンピュータの動作上、また、シリコンのレベルまで考慮してプログラムの実行スピードを上げるためには不可欠です。コンピュータが知っていることは数値演算だけなので、複数の計算を一度に実行する方法を知れば、プログラムを高速化するのに役立ちます。
本章では、比較的簡単な数学の問題として拡散方程式の解法に焦点を当て、CPUのレベルで何が起こっているのかを理解することで、ベクトル計算の複雑な問題を解き明かします。PythonのコードによってCPUに与える影響が異なることを理解し、効率よく精査する方法を知ることで、他の諸問題も理解できるようになります。
それでは、まず扱う問題を紹介し、Pythonだけを使って簡単に解いて見せます。メモリの問題を指摘しPythonだけでその問題を解決したあとで、numpyを導入しコードが高速になるしくみと理由を示します。次に、アルゴリズムを少し変更して、numpyで問題を解決できるようにコードを書き換えます。numpyの持つ汎用性の一部を除去することによって、さらに高速化できることを示します。最後に、一連の作業を支援する外部モジュールを導入し、プロファイリングせずに最適化することの危険性についても述べます。
Read now
Unlock full access