通常の Python リストと比べて NumPy の利点は何ですか? 質問する

通常の Python リストと比べて NumPy の利点は何ですか? 質問する

の利点は何ですか?ナンピ通常の Python リストと比べてどうですか?

金融市場シリーズが約 100 個あり、100 x 100 x 100 = 100 万セルのキューブ配列を作成します。各 x を各 y および z で回帰 (3 変数) して、配列に標準誤差を入力します。

パフォーマンスとスケーラビリティの理由から、「大きな行列」の場合は Python リストではなく NumPy を使用する必要があると聞いたことがあります。実際のところ、私は Python リストを知っており、それが私にとってはうまく機能しているようです。

NumPy に移行するとどのようなメリットがありますか?

1000 シリーズ (つまり、キューブ内に 10 億個の浮動小数点セル) があったらどうなるでしょうか?

ベストアンサー1

NumPy の配列は Python のリストよりもコンパクトです。Python で説明されているようなリストのリストは少なくとも 20 MB 程度かかりますが、セルに単精度浮動小数点数を含む NumPy 3D 配列は 4 MB に収まります。NumPy では、アイテムの読み取りと書き込みのアクセスも高速です。

100 万個のセルであればそれほど気にしないかもしれませんが、10 億個のセルとなると間違いなく気にするでしょう。どちらのアプローチも 32 ビット アーキテクチャには適合しませんが、64 ビット ビルドでは NumPy は 4 GB 程度で済みますが、Python だけでも少なくとも約 12 GB (サイズが 2 倍になるポインタが多数) 必要になります。これははるかに高価なハードウェアです。

違いは主に「間接性」によるものです。Python リストは Python オブジェクトへのポインターの配列で、ポインターごとに少なくとも 4 バイト、さらに最小の Python オブジェクトでも 16 バイト (型ポインターに 4 バイト、参照カウントに 4 バイト、値に 4 バイト、メモリ アロケータによって 16 に切り上げられます) です。NumPy 配列は均一な値の配列で、単精度の数値はそれぞれ 4 バイト、倍精度の数値は 8 バイトです。柔軟性は劣りますが、標準の Python リストの柔軟性にはかなりの代償を払うことになります。

おすすめ記事