ぺーぱーの日々

上機嫌でいること、夢中でいることを目標に、今日も色んなことに手を出します。

MENU

多次元配列が苦手です。

機械学習をするうえで、配列(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次元配列に変換
np.reshape(a, (2,3))
np.reshape(a, (2,2))
ValueError: cannot reshape array of size 5 into shape (2,2)が発生する。
 

割り切れる要素数でしかreshapeできないのか

やりたいこと

素数5の1次元配列を多次元配列にしたい。

調べた感じできない

 

まとめ

1次元から丁寧に触ってみたら、それほど怖がるものではないと感じた。難しくしているのは、(正しい言い回しかは不明)以下の2つかなと思う。

・配列が深くなる

・各配列の要素数が多い

 

でも、配列はたくさんの値が詰まった箱に過ぎない。と考えて、向き合えば操作できるはず。