1. ホーム
  2. python

[解決済み] 通常のPythonのリストと比較した場合、NumPyの利点は何ですか?

2022-03-19 12:38:57

質問

の利点は何ですか? NumPy を通常のPythonのリストに置き換えることはできますか?

私は約100の金融市場の系列を持っており、100x100x100=100万セルの立方体配列を作成するつもりです。私は、各xを各yおよびzで回帰(3変数)し、標準誤差で配列を埋めるつもりです。

私は、パフォーマンスとスケーラビリティの理由から、大きな行列にはPythonのリストではなくNumPyを使うべきだと聞きました。しかし、私はPythonのリストを知っていて、それは私のために働いているように見えます。

NumPyに移行した場合、どのようなメリットがあるのでしょうか?

1000系列(つまりキューブ内の浮動小数点セルが10億個)あったらどうする?

どのように解決するのですか?

NumPyの配列はPythonのリストよりもコンパクトです -- Pythonでは、あなたが説明したようなリストのリストは少なくとも20MBほどかかりますが、セルに単精度のフロートを使ったNumPyの3D配列は4MBに収まるでしょう。項目の読み書きのアクセスもNumPyの方が速いです。

どちらのアプローチも32ビットアーキテクチャには合いませんが、64ビットビルドではNumPyなら4GB程度、Pythonだけなら少なくとも約12GB(サイズが2倍になるポインタがたくさん)必要で、より高価なハードウェアになります。

PythonのリストはPythonオブジェクトへのポインタの配列で、ポインタごとに少なくとも4バイト、さらに最も小さいPythonオブジェクトでも16バイト(タイプポインタに4、参照カウントに4、値に4、メモリアロケータは16に切り上げる)です。単精度の数値はそれぞれ4バイト、倍精度の数値は8バイトを必要とします。しかし、Pythonの標準的なリストの柔軟性に対して、かなりの代償を払うことになります。