AI E資格

ラビットチャレンジでE資格に挑戦 49日目

今日も 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

-AI, E資格