2024.4.8 繰り返し計算におけるデータの保持【numpy】
stack【numpy】を用いることで、リストに格納された1次元の配列から2次元の配列を生成できる。
1次元配列の場合
code:p01.py
import numpy as np
hist = []
for i in range(5):
hist.append(data)
print('変換前')
print(hist)
hist = np.stack(hist) # (1)
print('変換後')
print(hist.shape)
print(hist)
結果:
code:result1.py
変換前
[array(1, 2, 3, 4), array(1, 2, 3, 4), array(1, 2, 3, 4), array(1, 2, 3, 4), array(1, 2, 3, 4)] 変換後
(5, 4)
2次元配列の場合
繰り返し計算の過程において生成されるデータが2次元配列の場合、これらをstack関数を用いて1つにまとめると、3次元データが生成される。
code:p02.py
import numpy as np
hist = []
data = np.array(1,2],[3,4)
for i in range(5):
hist.append(data)
hist = np.stack(hist) # (2)
print('変換後')
print(hist.shape)
print(hist)
結果:
code:result2.py
変換後
(5, 2, 2)
3次元配列はプロットなどの用途に利用するのは直感的でなく分かりづらい。
そこで、flattenメソッドを用いて1次元に変形したものをstackする。
code:p03.py
import numpy as np
hist = []
data = np.array(1,2],[3,4)
for i in range(5):
hist.append(data.flatten()) # <--- 確認
hist = np.stack(hist) # (2)
print('変換後')
print(hist.shape)
print(hist)
結果は2次元の配列となる。
code:result3.py
変換後
(5, 4)
これならスライス「:」を用いた行・列要素の抽出が容易である。