Numpy20本ノック
問題その18 演習問題
これまでの内容を理解しているか確認するために取り組みます。
下記の行列の形状をみて計算可能か確認したのち
まずは行列を作成。
いつも通りarrayで行列を作ったのですが、
作り方が全然ちがいました(笑)
A = np.arange(-10,13,2).reshape(4,-1)
A
array([[-10, -8, -6],
[ -4, -2, 0],
[ 2, 4, 6],
[ 8, 10, 12]])
B = np.eye(3,4)-2
B
array([[-1., -2., -2., -2.],
[-2., -1., -2., -2.],
[-2., -2., -1., -2.]])
行列積が可能かどうかはまず形状を確認します。
A.shape , B.shape
((4, 3), (3, 4))
基本的に行列積が成り立つのは
前の列の列数と後ろの行列の行数が同じ時
らしいので今回の問題では計算が成り立ちます。
C = A @ B
C
array([[ 38., 40., 42., 48.],
[ 8., 10., 12., 12.],
[-22., -20., -18., -24.],
[-52., -50., -48., -60.]])
問題その19 演習問題
先ほど作成した行列Cの2行2列目までをDとして取り出し
一度転置したあと逆行列を求めてください。
もう問題見ただけで頭がグルグルします(笑)
#2行2列目までを取り出します。
D = C[:2,:2]
D
array([[38., 40.],
[ 8., 10.]])
#転置します。
D.T
array([[38., 8.],
[40., 10.]])
#逆行列が存在するか確かめます。値が0でないと逆行列が存在します。
np.linalg.det(D.T)
59.999999999999986
#逆行列を求めます。
np.linalg.inv(D.T)
array([[ 0.16666667, -0.13333333],
[-0.66666667, 0.63333333]])
問題その20 演習問題
-100~100までの整数の乱数300サンプルを2つ作成し
それぞれをx軸の値、y軸n値とした場合の散布図をプロットしてください。
2つのランダムデータを作成
data1 = np.random.randint(-100, 100 ,300)
data2 = np.random.randint(-100, 100 ,300)
#プロットします。
plt.scatter(data, data2)
<matplotlib.collections.PathCollection at 0x215e831eee0>
コメント