3. numpy入門

import numpy as np

# 行列の作成
a = np.array([[1,2,3], [4,5,6]])
print(a)
print(type(a))
print(a.shape)
Copy to clipboard
[[1 2 3]
 [4 5 6]]
<class 'numpy.ndarray'>
(2, 3)
Copy to clipboard
#行の参照
a[0]
Copy to clipboard
array([1, 2, 3])
Copy to clipboard
#列の参照
a[:,0]
Copy to clipboard
array([1, 4])
Copy to clipboard
#スライス指定も可能
a[0:2]
Copy to clipboard
array([[1, 2, 3],
       [4, 5, 6]])
Copy to clipboard
a[:,0:2]
Copy to clipboard
array([[1, 2],
       [4, 5]])
Copy to clipboard
# 「行列 + 1」は全要素に対する和を実行
a + 1
Copy to clipboard
array([[2, 3, 4],
       [5, 6, 7]])
Copy to clipboard
# *演算子も同様。
a * 2
Copy to clipboard
array([[ 2,  4,  6],
       [ 8, 10, 12]])
Copy to clipboard
#行列演算ではない!
a * a
Copy to clipboard
array([[ 1,  4,  9],
       [16, 25, 36]])
Copy to clipboard
#転置行列
a.T
Copy to clipboard
array([[1, 4],
       [2, 5],
       [3, 6]])
Copy to clipboard
#内積を求めるにはdot関数を使う
np.dot(a, a.T)
Copy to clipboard
array([[14, 32],
       [32, 77]])
Copy to clipboard
#逆行列
np.linalg.inv(np.dot(a, a.T))
Copy to clipboard
array([[ 1.42592593, -0.59259259],
       [-0.59259259,  0.25925926]])
Copy to clipboard
#ゼロ行列、1行列、対角行列
print(np.zeros((2,3)))

print(np.ones((2,3)))

print(np.eye(3))
Copy to clipboard
[[0. 0. 0.]
 [0. 0. 0.]]
[[1. 1. 1.]
 [1. 1. 1.]]
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
Copy to clipboard
#特定範囲内で幅を指定してサンプル点を用意。
#例えば、
# 「y=x**2」のグラフを描画したいとき、
# 定義域「-10〜10の範囲で0.1刻みでサンプル点を用意」みたいなときに便利。
np.arange(0, 1, 0.3)
Copy to clipboard
array([0. , 0.3, 0.6, 0.9])
Copy to clipboard
#np.arangeで始点、刻み幅を省略すると0から指定個数の整数を用意。
np.arange(8)
Copy to clipboard
array([0, 1, 2, 3, 4, 5, 6, 7])
Copy to clipboard
#行列の形を変形できる。
np.reshape(np.arange(6),(2,3))
Copy to clipboard
array([[0, 1, 2],
       [3, 4, 5]])
Copy to clipboard
#刻み幅はどうでも良いからサンプル数を指定したい場合に便利。
np.linspace(0,2,3)
Copy to clipboard
array([0., 1., 2.])
Copy to clipboard
np.linspace(0,2,4)
Copy to clipboard
array([0.        , 0.66666667, 1.33333333, 2.        ])
Copy to clipboard
#行列を結合できる。
#縦方向に結合
a = np.array([[1,2,3], [4,5,6]])
b = np.array([[7,8,9], [10,11,12]])
np.r_[a, b]
Copy to clipboard
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
Copy to clipboard
#横方向に結合
np.c_[a, b]
Copy to clipboard
array([[ 1,  2,  3,  7,  8,  9],
       [ 4,  5,  6, 10, 11, 12]])
Copy to clipboard