listとarrayとNumPy配列の違い
・listの要素の型は何でも良い
・arrayはインポートが必要
・arrayは基本的に数値型を要素とする
・listとNumPy配列
listの要素の型は何でも良い
まず前提として、CやJAVAなどで「配列」と呼ばれているものがPythonで言うところの「array」に相当しており、
-
- 隣り合う要素がメモリ上で連続している
- 同じ型の変数しか保持できない
という特徴をもっている。Pythonでの「list」は要素がメモリ上で連続している保証は無いが、要素の型は基本的に何でも良いという点で使いやすい。特にプログラミング初学者にとっては、配列の型をいちいち気にしなくて良いのでコーディングがラクにできるというメリットがある。
一方で配列(array)の場合は、異なる型の要素を格納できない。
上の例では、int型だと思って読み込んだのにfloat型が渡されたんだけど、と怒られる。因みに ‘i’ でint型の要素からなるarrayであると指定している。array型を宣言する際は第1引数に型の種類を与える必要がある。
arrayはインポートが必要
arrayはインポートが必要である点もlistとの大きな違いである。
arrayは基本的に数値型を要素とする
これはlistとの違いというよりもarray型の特徴だが、arrayには基本的に数値型の要素を格納する。文字列やリストを要素とすることはできない。
listとNumPy配列
Pythonの数値計算ライブラリである「NumPy」をインポートすればNumPy配列が利用できる。NumPy配列ではリスト型を要素とするため、当然リストと同様に異なる型の変数を格納することができる。
NumPy配列は数値計算に特化しており、listよりも簡単に行列計算を行うことができる。ary.T などとすれば容易に転置行列を得ることができる。