"""
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
Pythonを使って働くほとんどの科学者はNumPyの力を利用しています。
Numpy は、 C や Fortran のような言語の計算パフォーマンスを、Pythonにもたらします。 このパワーはNumPyのシンプルさから来ており、NumPyによるソリューションの多くは明確でエレガントになります。
NumPyのAPIは、革新的なハードウェアを利用したり、特殊な配列タイプを作成したり、NumPyが提供する以上の機能を追加するためにライブラリを作成する際の基礎となります。
配列ライブラリ | 機能と応用分野 | |
Dask | 分析用の分散配列と高度な並列処理により、大規模な処理を可能にします。 | |
CuPy | Python を使用した GPUによる高速計算用のNumPy互換配列ライブラリ | |
JAX | NumPyコードの合成可能な変換ライブラリ: 微分、ベクトル化、GPU/TPUへのジャストインタイムコンパイル | |
Xarray | 高度な分析と視覚化のためのラベルとインデックス付き多次元配列 | |
Sparse | Dask と SciPy の疎行列の線形代数ライブラリを統合した、Numpy 互換の疎行列ライブラリ | |
PyTorch | 研究用のプロトタイピングから本番運用への展開を加速させる、深層学習フレームワーク | |
TensorFlow | 機械学習を利用したアプリケーションを簡単に構築・展開するための、エンド・ツー・エンドの機械学習プラットフォーム | |
MXNet | 柔軟や研究用のプロトタイピングから、実際の運用まで利用可能な深層学習フレームワーク | |
Arrow | 列型のインメモリーデータやその分析のための、複数の言語に対応した開発プラットフォーム | |
xtensor | 数値解析のためのブロードキャスティングと遅延計算を備えた多次元配列 | |
Awkward | Numpy のような イディオムを使って JSON のようなデータを操作するライブラリ | |
uarray | APIを実装から切り離すPythonバックエンドシステム (unumpyはNumPy APIを提供しています) |
Numpy は豊富なデータサイエンスライブラリのエコシステムの中核にあります。一般的なデータサイエンスのワークフローは次のようになります。
NumPyは、scikit-learnやSciPyのような強力な機械学習ライブラリの基礎を形成しています。機械学習の技術分野が成長するにつれ、NumPyをベースにしたライブラリの数も増えています。TensorFlowの深層学習機能は、音声認識や画像認識、テキストベースのアプリケーション、時系列分析、動画検出など、幅広い応用用途があります。PyTorchも、コンピュータビジョンや自然言語処理の研究者に人気のある深層学習ライブラリです。MXNetもAIパッケージの一つで、深層学習の設計図やテンプレート機能を提供しています。
NumPyは、Matplotlib、Seaborn、Plotly、Altair、Bokeh、Holoviz、Vispy、Napari、PyVistaなどの、急成長しているPython visualization landscapeに欠かせないコンポーネントです。
NumPy の大規模配列の高速処理により、研究者は、ネイティブの Python が扱うことができるよりもはるかに大きなデータセットを可視化することができます。