今日も AIを学ぶ為の本格Python講座 を進めた。
昨日勉強したところすでに忘れている。怖い。
たぶん明日も忘れてる。
■AIを学ぶ為の本格Python講座
PY14_Numpy_行列の作成・取り扱い4
今日学んだこと
reshape 行列の形を変える
>>> grid=np.arange(1,10)
>>> grid
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
3×3の行列に変更
>>> grid.reshape((3,3))
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>>
reshapeは要素数があっていないとダメ
girdは9個の要素があるが、それを2×5の行列、要素が10の行列に
変更しようとしているので、ダメ。
>>> grid.reshape((2,5))
Traceback (most recent call last):
File "", line 1, in
ValueError: cannot reshape array of size 9 into shape (2,5)
>>>
行ベクトルの作成
>>> test1=np.arange(1,4)
>>>
>>> test1
array([1, 2, 3])
>>>
全体を1つの配列に入れ込む(行ベクトル)
reshape版
>>> test1.reshape((1,3))
array([[1, 2, 3]])
>>>
newaxis版
>>> test1[np.newaxis]
array([[1, 2, 3]])
>>>
列ベクトルの作成
1つ1つの要素を配列にする(列ベクトル)
reshape版
>>> test1.reshape((3,1))
array([[1],
[2],
[3]])
>>>
newaxis版
>>> test1[:,np.newaxis]
array([[1],
[2],
[3]])
>>>
良く分からなかった
何のため?後々理解できるんだろう
>>> test2=np.random.randint(0,10,(3,4))
>>> test2
array([[5, 9, 1, 7],
[4, 7, 6, 5],
[5, 1, 5, 6]])
>>>
>>> test2[:, np.newaxis, :]
array([[[5, 9, 1, 7]],
[[4, 7, 6, 5]],
[[5, 1, 5, 6]]])
>>>
concatenate() 行列の連結
>>> test1=np.arange(1,4)
>>> test1
array([1, 2, 3])
>>>
>>>
>>> test2=np.array([3,2,1])
>>>
>>> test2
array([3, 2, 1])
>>>
test1とtest2が連結される
>>> np.concatenate([test1,test2])
array([1, 2, 3, 3, 2, 1])
>>>
3個でも連結できる。
>>> test3
array([99, 99, 99])
>>>
>>> test1
array([1, 2, 3])
>>>
>>> test2
array([3, 2, 1])
>>>
>>> np.concatenate([test1,test2,test3])
array([ 1, 2, 3, 3, 2, 1, 99, 99, 99])
>>>
多次元 2次元や3次元の行列も連結できる。
2次元
>>> test4=np.array([[1,2,3],[4,5,6]])
>>>
>>> test4
array([[1, 2, 3],
[4, 5, 6]])
>>> test4.shape
(2, 3)
>>>
>>>
test4の後にtest4を連結させる。
>>> test5=np.concatenate([test4,test4], axis=0)
>>> test5
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
>>>
>>> test5.shape
(4, 3)
>>>
axisの値を変更すると、どこで連結させるか指定できる。
1つ中の配列同士で連結させる。
>>> test6=np.concatenate([test4,test4], axis=1)
>>>
>>> test6
array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
>>> test6.shape
(2, 6)
>>>
3次元
>>> test7=np.random.randint(0,10,(3,4,3))
>>>
>>> test7
array([[[5, 9, 9],
[2, 1, 4],
[9, 3, 0],
[2, 0, 7]],
[[7, 2, 5],
[7, 7, 5],
[3, 6, 5],
[7, 9, 2]],
[[3, 8, 8],
[6, 7, 8],
[4, 1, 5],
[4, 6, 5]]])
>>>
>>>
>>>
axis=2で連結
2階層入り込んだところで連結
>>> test8=np.concatenate([test7,test7],axis=2)
>>> test8
array([[[5, 9, 9, 5, 9, 9],
[2, 1, 4, 2, 1, 4],
[9, 3, 0, 9, 3, 0],
[2, 0, 7, 2, 0, 7]],
[[7, 2, 5, 7, 2, 5],
[7, 7, 5, 7, 7, 5],
[3, 6, 5, 3, 6, 5],
[7, 9, 2, 7, 9, 2]],
[[3, 8, 8, 3, 8, 8],
[6, 7, 8, 6, 7, 8],
[4, 1, 5, 4, 1, 5],
[4, 6, 5, 4, 6, 5]]])
>>> test8.shape
(3, 4, 6)
>>>
axis=1で連結
1階層入りこんだところで連結
>>> test9=np.concatenate([test7,test7],axis=1)
>>> test9
array([[[5, 9, 9],
[2, 1, 4],
[9, 3, 0],
[2, 0, 7],
[5, 9, 9],
[2, 1, 4],
[9, 3, 0],
[2, 0, 7]],
[[7, 2, 5],
[7, 7, 5],
[3, 6, 5],
[7, 9, 2],
[7, 2, 5],
[7, 7, 5],
[3, 6, 5],
[7, 9, 2]],
[[3, 8, 8],
[6, 7, 8],
[4, 1, 5],
[4, 6, 5],
[3, 8, 8],
[6, 7, 8],
[4, 1, 5],
[4, 6, 5]]])
>>> test9.shape
(3, 8, 3)
>>>
axis=0で連結
そのまま連結
>>> test10=np.concatenate([test7,test7],axis=0)
>>>
>>> test10
array([[[5, 9, 9],
[2, 1, 4],
[9, 3, 0],
[2, 0, 7]],
[[7, 2, 5],
[7, 7, 5],
[3, 6, 5],
[7, 9, 2]],
[[3, 8, 8],
[6, 7, 8],
[4, 1, 5],
[4, 6, 5]],
[[5, 9, 9],
[2, 1, 4],
[9, 3, 0],
[2, 0, 7]],
[[7, 2, 5],
[7, 7, 5],
[3, 6, 5],
[7, 9, 2]],
[[3, 8, 8],
[6, 7, 8],
[4, 1, 5],
[4, 6, 5]]])
>>>
>>> test10.shape
(6, 4, 3)
>>>
>>>
勉強時間
今日: 0.5時間
総勉強時間: 32時間
お得キャンペーンの紹介
ラビットチャレンジの
Amazonギフト券「5,000円」プレゼントキャンペーンのお知らせ
申込時に、以下コードを使えば、入会金が5000円引かれるようです。
また、紹介した僕にも5000円のAmazonギフト券が送られるようです。
お得なので、よかったら申込時お使いください。
紹介コード:friend0019697
※本キャンペーンの期間は、 2021年9月15日~10月31日 です。
「お友達紹介キャンペーン」特設ページ:
https://ai99