新機能
- 新しい可変長文字列 dtype、
StringDType と、文字列操作のための numpy.strings 名前空間を追加。
- すべての
numpy.fft 関数で float32 と longdouble をサポート。
- メインの
numpy 名前空間で配列 API 標準をサポート。
パフォーマンス改善
- ソート関数(
sort, argsort, partition, argpartition)が Intel x86-simd-sort と Google Highway ライブラリを使用して高速化。
- macOS Accelerate をサポートし、macOS >=14 向けのバイナリホイールを提供。線形代数演算のパフォーマンスが大幅に向上。
numpy.char の固定長文字列操作が高速化。
- ハードウェア別カーネルを確認して利用できる新しいトレースおよび検査 API、
opt_func_info を追加。
Python API 改善
- 公開 API と非公開 API を明確に分離し、新しいモジュール構造を導入。
- 非推奨の関数やエイリアスを多数削除し、学習と利用がより容易に。
- 標準 dtype 名と新しい
isdtype チェック関数を追加。
C API 改善
- ユーザー定義 dtype を作成するための新しい公開 C API を追加。
- 古い関数やマクロを削除し、非公開の内部実装を隠蔽。
- 新しい初期化関数:
PyArray_ImportNumPyAPI と PyUFunc_ImportUFuncAPI。
改善された動作
- NEP 50 を採用し、型昇格の動作を改善。入力配列のデータ値ではなく dtype のみに依存するように変更。
- Windows でデフォルトの整数型が
int32 から int64 に変更。
- 最大配列次元数が 32 から 64 に増加。
ドキュメント
- リファレンスガイドのナビゲーションが大幅に改善。
- ソースからビルドするためのドキュメントを全面的に書き直し。
Python API の削除項目
np.geterrobj, np.seterrobj および関連する ufunc キーワード引数 extobj= を削除。
np.cast を削除し、np.asarray(arg, dtype=dtype) に置き換え。
np.source を削除し、inspect.getsource に置き換え。
np.lookfor を削除。
numpy.who を削除し、Spyder や Jupyter Notebook などの IDE の変数エクスプローラーの利用を推奨。
- 複数の非推奨関数とエイリアスを削除。
GN⁺の見解
- パフォーマンス改善: 新しいソートアルゴリズムと macOS Accelerate のサポートにより、データ処理速度の大幅な向上が期待される。
- API 整理: 非推奨関数とエイリアスの削除によって、NumPy の利用がより直感的で簡潔になる。
- 型昇格: NEP 50 の採用により、型昇格の動作がより予測可能になる。これは混在 dtype 演算での予期しない結果を減らすのに役立つ。
- ドキュメント改善: リファレンスガイドとビルド文書の改善により、開発者は NumPy をより理解しやすく、使いやすくなる。
- 互換性の問題: 多くの API 変更があるため、既存コードに互換性の問題が生じる可能性がある。マイグレーションガイドを参照してコードを更新する必要がある。
2件のコメント
競合するパッケージがかなり多そうですね..
Hacker Newsの意見
複雑な演算の組み合わせ方法: 要素ごとではない演算を構成する、よりシンプルで覚えやすい方法が必要。やり方が多すぎて、毎回学び直さなければならないのが難点。
Windowsのデフォルト整数型の変更: Windowsでデフォルトの整数型がint32からint64に変更された。これで他のプラットフォームと一致するようになり、良いことだ。
NumPyの主な更新: NumPy自体を頻繁に直接使わないユーザーにとっては、大きな変化はないかもしれない。主にpandasやscipyを使い、必要なときだけNumPyのアルゴリズムを使う。
アップデートの周期: 大きなアップデートがあるたびにすぐアップグレードするのではなく、安定したバージョンが出るまで待つことが多い。
バージョン管理: 18年ぶりに大きな変化がある最初のメジャーリリースなのだから、新しいバージョンとしてフォークした方がよかった気がする。
pip install numpy2でインストールできるようにして、他のライブラリとの互換性を心配しなくて済むようにするのが望ましい。パッケージ互換性の問題: 一部のパッケージが1.x系に固定されておらず、問題が発生している。
pip install numpy==1.*で一時的に対処可能。リリースノートのリンク: NumPy 2.0.0のリリースノートへのリンクを掲載。NumPy 2.0.0 リリースノート