6章NumPy配列の計算:ユニバーサル関数

ここまでは、NumPyの基本的ないくつかの仕組みについて説明しました。以降の章では、Pythonデータサイエンスの世界でNumPyが非常に重要である理由について説明します。すなわち、データ配列に対して最適化された計算を行うための容易で柔軟なインターフェイスです。

NumPy配列の計算は非常に速くなる可能性もあれば、非常に遅くなる可能性もあります。速くするための鍵は、NumPyのユニバーサル関数(ufunc)で実装されたベクトル化演算を使用することです。この章では、配列要素に対する計算の繰り返しをより効率的に行うため、ufuncの必要性を説明します。続いてNumPyパッケージで利用可能な、一般的で有用な多くの算術ufuncを紹介します。

6.1 低速なループ処理

CPythonとして知られるPythonのリファレンス実装では、いくつかの処理は非常に低速です。これは、動的に解釈を行うという言語の性質上、すなわち型が柔軟であるため、CやFortranなどの言語のように効率的な機械語へのコンパイルができないことが原因です。最近、この弱点に対処するためのさまざまな試みが行われています。よく知られている例はPythonのJust-In-Timeコンパイル実装であるPyPyプロジェクト(http://pypy.org/)、Pythonコードをコンパイル可能なCコードに変換するCythonプロジェクト(http://cython.org)、Pythonコードブロックを高速なLLVMバイトコードに変換するNumbaプロジェクト(http://numba.pydata.org/)です。それぞれには長所と短所がありますが、3つのアプローチのいずれも標準CPythonエンジンほどには普及していません ...

Get Pythonデータサイエンスハンドブック 第2版 ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.