Python 次世代の多次元配列パッケージ群
このところ、たびたび NumPy
後継が...とか 並列処理が...という話を聞くので、この秋 注目の多次元配列パッケージをまとめたい。
バックエンド系
NumPy
のように数値計算処理を自前で実装しているパッケージ。
DyND
Blaze
プロジェクトのひとつ。C++ 実装 + Python バインディング。GitHub にいくつか Example があがっているが、複合型やカテゴリカル型、GroupBy 操作がサポートされていて熱い。ラベルデータも NumPy
より簡単に実装できそうだ。
並列分散系
自身では直接 数値計算処理を行わず、バックエンド ( 主に NumPy
)を利用して並列/分散処理を行うパッケージ。1 物理PC/複数コアでの並列計算を主用途とし、NumPy
, pandas
では少し苦しいが PySpark
などを使うほどじゃない...という場合に利用するもの。
Dask
Blaze
プロジェクトのひとつ。Pure-Python 実装。主用途は単一物理PCでの複数コア計算だが、複数PCに処理を分散させることもできる。
NumPy
の API で並列計算を行う dask.array
のほか、toolz
相当の操作を行う dask.bag
、pandas
相当の処理を行う dask.dataframe
など一連のデータ構造が揃っている。
開発者はベースパッケージである NumPy
、toolz
、pandas
のコミッタとの兼任が多い。自分もコミット権限をいただいており、dask.dataframe
への API 追加を行なっている。
DistArray
NumPy
の API で並列計算を行う DistArray
のみをサポート、ほかのデータ構造はない。Pure-Python 実装。見た感じ、並列処理の基本的な考え方は Dask
と同じようだ。Enthought が好きな方はこちらを使えばよいかと。
bolt
NumPy
の API でローカル計算/分散処理を行う。Pure-Python実装。ローカル計算は NumPy
をそのまま使い (並列処理しない)、分散処理は Spark
で行う。海外の方が期待の新星っぽい扱いをしていたので気になったのだが、現時点で実装されている API は多くはない。
ほかにもいくつかプロジェクトがあるが、自分としては Dask
を流行らせたいので、その記事を書きます。
9/24 追記 書きました。