😉

listとarrayの違い

2024/01/18に公開

はじめに

機械学習を学習していると、データ処理のフェーズにおいてlistとarrayの扱いに躓いた。そこで、本記事ではlistとarrayの特徴をまとめ、それぞれの違いとlist->array、array->listの変換についてもまとめていこうと思う。

list

Pythonの標準のリスト。

リスト内の要素は型の違うデータを混在することができる。

a = [1, 2, 3, 4, 5]
b = [1, 3.141592, 'apple']

print(a) # [1, 2, 3, 4, 5]
print(b) # [1, 3.141592, 'apple']

インデックスを指定することで、特定の要素を取り出すことができる。

c = [100, 101, 102, 103, 104]

print(c[3]) # 103

要素の追加と削除ができる。

d = [1, 2]
d.append(100)

print(d) # 1, 2, 100
d = [1, 2, 100]
d.remove(1)

print(d) # 2, 100

ソートができる。

この場合、配列eをソートすると元のリストごと書き換えているので元の順序は戻らない。
元のリストを維持したいときは、sorted()を使うと新しいリストとして返すので適宜使う。

e = [10, 50, 40, 20, 30]
e.sort()

print(e) # [10, 20, 30, 40, 50]

array

array配列を用いるときは、np.array()にlistを渡すことでそのリストのベクトルを持ったndarrayオブジェクトを作ることができる。要素は整数のタプルで表され、要素数はその次元の次元数を表している。

f = np.array([1, 2, 3, 4, 5])

print(f) # array([1, 2, 3, 4, 5])

上記では、np.arrayにリスト[1, 2, 3, 4, 5]を渡すことで、[1, 2, 3, 4, 5]というベクトルを表すndarrayオブジェクトを生成している。

要素は全て同じ型でなければならない

listでは、[1, 3.141592, 'apple']のように型がバラバラでもlistとして成立していたが、ndarrayではエラー表示になってしまう。array型では、一つの型(整数)で統一しなければならない。

listとarrayのチガイ

さて、それではそれぞれのできるできないを見ていこう。

shape()

shape()は各次元ごとの要素数を表すメソッドである。
listでは、shape()メソッドが使えないが、ndarrayでは使える。
なお、リストの長さを表すlenはどちらも使える。

g = np.array([1, 2, 3])

print(g.shape()) # 3

計算速度

NumpyはPythonで数値計算を高速に行うライブラリなので、ndarrayの方が容易かつ高速に処理することができる。

更新日

1回目:2024/01/18

Discussion