列ベクトル
```php # ベクトル import numpy as np x=np.array([2,1]) print(x) x=x.reshape(-1,1) print(x) # [2 1] # [[2],[1]] ```ベクトルの計算
```php # ベクトルの計算 x=np.array([2,1]).reshape(-1,1) y=np.array([1,3]).reshape(-1,1) print(x) print(y) print(x+y) print(x-y) print(2*x) print(-y) print('ベクトルの内積',x*y) # ベクトルの内積 print('ベクトル同士の内積はスカラーになる', np.dot(x.T,y)) # x:[[2],[1]] # y:[[1],[3]] # x+y[[3],[4]] # x-y[[ 1],[-2]] # 2*x:[[4],[2]] # -y[[-1],[-3]] # ベクトルの内積 [[2],[3]] # ベクトル同士の内積はスカラーになる [[5]] ```ノルム
```php # ノルム x=np.array([4,-3]).reshape(-1,1) print(np.linalg.norm(x)) print('L1ノルム:',np.linalg.norm(x,1)) # L1ノルム print('L2ノルム:',np.linalg.norm(x,2)) # L2ノルム print('L∞ノルム:',np.linalg.norm(x,np.inf)) #L∞ノルム # 5.0 # L1ノルム: 7.0 # L2ノルム: 5.0 # L∞ノルム: 4.0 ```距離
```php # 距離 x=np.array([4,-3]).reshape(-1,1) y=np.array([2,4]).reshape(-1,1) print(np.linalg.norm(x-y)) from scipy.spatial import distance print('ユークリッド距離:',distance.euclidean(x,y)) # ユークリッド距離 print('マンハッタン距離:',distance.cityblock(x,y))# マンハッタン距離 print('チェビシェフ距離:',distance.chebyshev(x,y)) # チェビシェフ距離 # 7.280109889280518 # ユークリッド距離: 7.280109889280518 # マンハッタン距離: 9 # チェビシェフ距離: 7 ```内積
```php # 内積 x=np.array([4,-3]).reshape(-1,1) y=np.array([2,4]).reshape(-1,1) print(np.dot(x.T,y))#ベクトル同士の内積はスカラーになるが、Pythonでは要素が一つだけのNumpyのarrayが返ってくる print(np.dot(x.T,y)[0,0]) # [[-4]] # -4 ```行列式
```php # 行列式 A = np.array([ [ 4., -7., 4], [ 1., 1., -1.], [ 2., 5., -8.], ]) print('Aの行列式',np.linalg.det(A))#Aの行列式 print('Aの逆行列',np.linalg.inv(A)) # Aの行列式 -42.00000000000001 # Aの逆行列 [[ 0.07142857 0.85714286 -0.07142857] # [-0.14285714 0.95238095 -0.19047619] # [-0.07142857 0.80952381 -0.26190476]] ```方程式の解を求める
```php # 解を求める A = np.array([ [ 4., -7., 4], [ 1., 1., -1.], [ 2., 5., -8.], ]) b = np.array([1., 6., 3.]).reshape(-1,1) np.dot(np.linalg.inv(A),b) # array([[5.], # [5.], # [4.]]) ```ランク
```php # ランク A = np.array([ [ 2., 1., -1], [ 1., -1., 3.], [ -1., 5., 2.], ]) np.linalg.matrix_rank(A) # 3 ```行列の演算
```php # 行列の演算 A = np.array([ [ 4., -7., 4], [ 1., 1., -1.], [ 2., 5., -8.], ]) B = np.array([ [ 1., 2., -5.], [ 2., 3., -7.], [ 4., -1., 7.], ]) k=10 print(A+B) print(A-B) print(k*A) print((1/k)*A) # [[ 5. -5. -1.] # [ 3. 4. -8.] # [ 6. 4. -1.]] # [[ 3. -9. 9.] # [ -1. -2. 6.] # [ -2. 6. -15.]] # [[ 40. -70. 40.] # [ 10. 10. -10.] # [ 20. 50. -80.]] # [[ 0.4 -0.7 0.4] # [ 0.1 0.1 -0.1] # [ 0.2 0.5 -0.8]] ```行列とベクトルの積
```php # 行列とベクトルの積 A = np.array([ [ 4., -7., 4], [ 1., 1., -1.], [ 2., 5., -8.], ]) B = np.array([ [ 1., 2., -5.], [ 2., 3., -7.], ]) x = np.array([1., 2., 3.]).reshape(-1,1) print(np.dot(A,x)) print(np.dot(B,x)) # [[ 2.],[ 0.],[-12.]] # [[-10.],[-13.]] ```行列と行列の積
```php # 行列と行列の積 A = np.array([ [ 2., 1.], [ 1., 3.], [ 1., -1.], ]) B = np.array([ [ 1., -1., 2.], [ 1., 2., 3.], ]) print(np.dot(A,B)) print(np.dot(B,A)) # [[ 3. 0. 7.] # [ 4. 5. 11.] # [ 0. -3. -1.]] # [[ 3. -4.] # [ 7. 4.]] ```線形写像
```php # 線形写像 A = np.array([ [ 1., 2., -3.], [ 2., -1., 1.], [ -1., 3., -2.], ]) x = np.array([4., 2., 3.]).reshape(-1,1) print(A) print(np.dot(A,x)) # [[ 1. 2. -3.] # [ 2. -1. 1.] # [-1. 3. -2.]] # [[-1.],[ 9.],[-4.]]) ```合成写像
```php # 合成写像 A = np.array([ [ 1., 2.], [ 3., -1.], [ 4., 5.], ])B = np.array([
[ -2., 2., -1.,],
[ 3., 1., 2.,],
])
print(np.dot(B,A))
print(np.dot(A,B))
[[ 0. -11.],[ 14. 15.]]
[[ 4. 4. 3.],[-9. 5. -5.],[ 7. 13. 6.]]
<h1>行列の連結</h1>
```php
# 行列の連結
A = np.array([
[ 1., 2.],
[ 3., -4.],
])
x1 = np.array([2., 3.]).reshape(-1,1)
x2 = np.array([1., 1.]).reshape(-1,1)
X=np.concatenate([x1, x2], 1)
X
# array([[2., 1.],
# [3., 1.]])