Python 無料で独習 【超特訓】Numpy20本ノック 10

Python
この記事は約3分で読めます。

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>

コメント

タイトルとURLをコピーしました