なぜNumpyはデータ型を統一するのか
みなさんこんにちわAIくんです。
今日は「NumpyのリストとPythonのリストに何の違いがあるのか」
「データ型を統一する理由はなんなのか」
について話していこうと思います。
データ型の違い
結論から言うと、
統一する理由は数値計算処理の高速化と消費メモリを抑えるためです。
Pythonのリストは1つのリスト内に様々なデータ型を持つことができます。
例えば、int8, int16, float16, complex64などなど。
一方、Numpyの配列内は基本的には同じ型(dtype)のデータしか持ちません。
「配列内のデータ型が違うだけで何が違うの?」と最初思いました。
でも実はこのデータ型というのは数値計算処理をする際に
重要な要因になるのです。
前回の記事で書きましたが、
Pythonは動的型付き言語で
データ型の扱いが柔軟で素早く書くことができる言語です。
その分、処理速度はCやJavaに比べたら遅いという面があります。
このPythonのデメリットを補ってるのがNumpyで、
そのNumpyはC言語で書かれています。
C言語で書かれた型を固定して計算できるコードをPythonから呼び出せるようにしたのがNumpyです。
これにより処理速度が高速化できメモリの消費量を抑えることができるのです。
つまり、配列内のデータ型が違うと処理の高速化や消費量の節約ができないわけです。
まとめ
Pythonはデータ型に関わらず素早くコードを書くことが可能だがその分、
数値処理が遅く消費メモリも抑えることが難しい。
そこで、データ型を固定したC言語で書かれたNumpyをPythonがインポート
することにより、高速化と消費メモリを抑えることができている。
話が逸れますが...
Numpyは独自の「ndarray(n-dimensional-array)」という
多次元を扱う配列があります。Pythonのリストではなく独自のデータ構造を持っています。
Numpyを使わない場合、PythonはN次元配列を扱うために
多重リストを利用します。
このあたりの話は次回以降話し行きたいと思います。