機械学習をするうえで、配列(array型のデータ構造)は避けて通れないことを随所に感じる。そこで、改めてarray型配列について概念的な理解に努める。(嫌だから言葉が固い。)
仮説として、次元数が大きくなるとややこしくなるというイメージがあるので、
1次元から1つずつ次元数を大きくして、ステップを踏んで理解をしていきたい。
1次元配列
配列をつくる
a = np.array([1,2,3])
リスト型変数から配列をつくる
l2 = [4,5,6]
a2 = np.array(l2)
配列を操作する
要素を取り出す
a[0]
要素を変更する
a[0] = 4
要素を追加する
a3 = np.array(l+l2)
2次元配列
配列をつくる
a = np.array([[1,2,3],[4,5,6]])
1次元の配列を2次元にする
a = np.arange(6)
a = np.reshape(a, (2,3))
array([0, 1, 2, 3, 4, 5])
↓
array([[0, 1, 2], [3, 4, 5]])
同様に、1次元を3次元に変える
a = np.arange(6)
np.reshape(a,(3,2))
array([0, 1, 2, 3, 4, 5])
↓
array([[0, 1], [2, 3], [4, 5]])
方法
numpyのreshape()メソッドを使う
引数に、配列次元を変えたい配列 と 次元数と各次元の要素数と指定。
エラーになる例
要素数5の1次元配列を2次元配列に変換
まとめ
1次元から丁寧に触ってみたら、それほど怖がるものではないと感じた。難しくしているのは、(正しい言い回しかは不明)以下の2つかなと思う。
・配列が深くなる
・各配列の要素数が多い
でも、配列はたくさんの値が詰まった箱に過ぎない。と考えて、向き合えば操作できるはず。