NumPy
Pythonによる科学技術計算の基礎パッケージ
NumPy 1.26.0 がリリースされました。
2023-09-16
強力な多次元配列
NumPyの高速で多機能なベクトル化計算、インデックス処理、ブロードキャストの考え方は、現在の配列計算におけるデファクト・スタ>ンダードです。
数値計算ツール群
NumPyは、様々な数学関数、乱数生成器、線形代数ルーチン、フーリエ変換などを提供しています。
相互運用性
NumPyは、幅広いハードウェアとコンピューティング・プラットフォームをサポートしており、分散処理、GPU、疎行列ライブラリにも対 応しています。
高パフォーマンス
NumPyの大部分は最適化されたC言語のコードで構成されています。これによりPythonの柔軟性とコンパイルされたコードの高速性の両方 を享受できます。
使いやすさ
NumPyの高水準なシンタックスは、どんなバックグラウンドや経験を持つのプログラマーでも簡単に利用することができ、生産性を高め>ることができます。
オープンソース
NumPyは、寛容なBSDライセンスで公開されています。NumPyは活発で、互>いを尊重し、多様性を認め合うコミュニティによって、 GitHub上でオープンに開発されていま す.
NumPy を試す

インタラクティブシェルを使用して、ブラウザ上で Numpy を試してみてください。

"""
To try the examples in the browser:
1. Type code in the input cell and press
   Shift + Enter to execute
2. Or copy paste the code, and click on
   the "Run" button in the toolbar
"""

# The standard way to import NumPy:
import numpy as np

# Create a 2-D array, set every second element in
# some rows and find max per row:

x = np.arange(15, dtype=np.int64).reshape(3, 5)
x[1:, ::2] = -99
x
# array([[  0,   1,   2,   3,   4],
#        [-99,   6, -99,   8, -99],
#        [-99,  11, -99,  13, -99]])

x.max(axis=1)
# array([ 4,  8, 13])

# Generate normally distributed random numbers:
rng = np.random.default_rng()
samples = rng.normal(size=2500)
samples

NumPyのエコシステム

Pythonを使って働くほとんどの科学者はNumPyの力を利用しています。

Numpy は、 C や Fortran のような言語の計算パフォーマンスを、Pythonにもたらします。 このパワーはNumPyのシンプルさから来ており、NumPyによるソリューションの多くは明確でエレガントになります。

  • NumPyのAPIは、革新的なハードウェアを利用したり、特殊な配列タイプを作成したり、NumPyが提供する以上の機能を追加するためにライブラリを作成する際の基礎となります。

    配列ライブラリ機能と応用分野
    DaskDask分析用の分散配列と高度な並列処理により、大規模な処理を可能にします。
    CuPyCuPyPython を使用した GPUによる高速計算用のNumPy互換配列ライブラリ
    JAXJAXNumPyコードの合成可能な変換ライブラリ: 微分、ベクトル化、GPU/TPUへのジャストインタイムコンパイル
    xarrayXarray高度な分析と視覚化のためのラベルとインデックス付き多次元配列
    sparseSparseDask と SciPy の疎行列の線形代数ライブラリを統合した、Numpy 互換の疎行列ライブラリ
    PyTorchPyTorch研究用のプロトタイピングから本番運用への展開を加速させる、深層学習フレームワーク
    TensorFlowTensorFlow機械学習を利用したアプリケーションを簡単に構築・展開するための、エンド・ツー・エンドの機械学習プラットフォーム
    MXNetMXNet柔軟や研究用のプロトタイピングから、実際の運用まで利用可能な深層学習フレームワーク
    arrowArrow列型のインメモリーデータやその分析のための、複数の言語に対応した開発プラットフォーム
    xtensorxtensor数値解析のためのブロードキャスティングと遅延計算を備えた多次元配列
    awkwardAwkwardNumpy のような イディオムを使って JSON のようなデータを操作するライブラリ
    uarrayuarrayAPIを実装から切り離すPythonバックエンドシステム (unumpyはNumPy APIを提供しています)
    tensorlytensorlyNumpy、MXNet、PyTorch、TensorFlowまたはCupyをシームレスに使用するための、テンソル学習、テンソル代数、およびそれらのテンソル計算のためのバックエンド
  • Python ライブラリの図 。5 つのカテゴリに分類され、「抽出、変換、読み込み」、「データ探索」、「モデリング」、「評価」、「可視化」です。

    Numpy は豊富なデータサイエンスライブラリのエコシステムの中核にあります。一般的なデータサイエンスのワークフローは次のようになります。

    大規模データに対して、DaskRayはスケールすることを目指して設計されています。安定したデプロイメントに関しては、データのバージョニング(DVC)、実験の追跡(MLFlow)、ワークフローの自動化(AirflowおよびPrefectが重要ですが様々なNumPyベースのツールが提供されています。

    三つの円が重なり合う図。円はそれぞれ「数学」、「コンピューターサイエンス」、「専門知識」でラベル付けされています。図の中心部には、三つの円が重なり合って形成されるエリアがあり、「データサイエンス」とラベル付けされています。
  • NumPyは、scikit-learnSciPyのような強力な機械学習ライブラリの基礎を形成しています。機械学習の技術分野が成長するにつれ、NumPyをベースにしたライブラリの数も増えています。TensorFlowの深層学習機能は、音声認識や画像認識、テキストベースのアプリケーション、時系列分析、動画検出など、幅広い応用用途があります。PyTorchも、コンピュータビジョンや自然言語処理の研究者に人気のある深層学習ライブラリです。MXNetもAIパッケージの一つで、深層学習の設計図やテンプレート機能を提供しています。

    ensemble法と呼ばれる統計的手法であるビンニング、バギング、スタッキングや、XGBoostLightGBMCatBoostなどのツールで実装されているブースティングなどは、機械学習アルゴリズムの一つであり、最速の推論エンジンの一つです。YellowbrickEli5は機械学習の可視化機能を提供しています。

  • matplotlibで作られたストリームプロット
    ggpyで作られた散布図グラフ
    plotyで作られた箱ひげ図
    altairで作られたストリームグラフ
    2種類のグラフによるペアプロット。seabornで作られたプロットと周波数グラフ"
    PyVista製の3Dボリュームレンダリング
    napariで作られた多次元画像
    vispyで作られたボロノイ図

    NumPyは、MatplotlibSeabornPlotlyAltairBokehHolovizVispyNapariPyVistaなどの、急成長しているPython visualization landscapeに欠かせないコンポーネントです。

    NumPy の大規模配列の高速処理により、研究者は、ネイティブの Python が扱うことができるよりもはるかに大きなデータセットを可視化することができます。

  • ケーススタディ