Làm quen với ma trận
Giới thiệu một số thao tác cơ bản với ma trận.
Import thư viện trước khi thực hiện code
1
import numpy as np
Khởi tạo matrix
1
2
3
4
5
6
7
# tao mot matrix
A = np.array([
[1, 2, 3],
[4, 5, 1]
], dtype=np.float64)
print(A)
print(type(A))
Ma trận đơn vị
1
2
3
4
5
'''ma tran don vi'''
A = np.eye(3)
print(A) # duong cheo only 1
A = np.eye(3, k = -1) # gia tri 1 o duong cheo ben trai
print(A)
Tạo ma trận chéo với vector
1
2
3
4
''' tao ma tran cheo voi vector'''
A = np.diag([1, 3, 5])
print(A)
print(np.diag(A)) # gia tri duong cheo
Tổng theo cộng, hàng, chẵn lẻ
1
2
3
4
5
6
7
8
9
10
11
12
A = np.array([
[1, 3, 4, 5],
[2, 3, 6, 1],
[3, 6, 9, 0]
], dtype=np.float64)
print(A)
print(A.shape)
print(np.sum(A[:, 1::2])) # tong cac cot le
print(np.sum(A[::2, :])) # tong cac hang chan
print(np.sum(A, axis = 0)) # tong theo cot
print(np.sum(A, axis = 1)) # tong theo hang
print(np.sum(A, axis = 0, keepdims = True)) # giu chieu (1 * 4)
Tạo ma trận ngẫu nhiên
1
2
3
# tao mot matrix ngau nhien
A = np.random.randn(2, 3)
print(A)
Frobenious Norm
Tổng bình phương các phần tử của ma trận
1
2
3
4
5
6
7
8
#frobenious norm (tong binh phuong cac phan tu ma tran)
A = np.random.randn(3, 4)
A = np.array([
[1, 3],
[2, 5]
], dtype=np.float64)
fn = np.sqrt(np.sum(A ** 2)) # frobenious norm
print(fn)
Phép nhân từng phần tử ma trận
sử dụng phép nhân wise-element
1
2
3
4
5
6
# phep nhan ma tran A * B (nhan tung chi so voi nhau)
A = np.random.randn(2, 3)
B = np.random.randn(2, 3)
print(A)
print(B)
print(A * B)
Kiểm tra tính gần nhau của 2 ma trận
1
2
3
4
5
6
# kiem tra tinh gan nhau cua 2 ma tran
A = np.random.randn(2, 3)
B = np.random.randn(2, 3)
Z = A - B
fn_2 = np.sqrt(np.sum(Z ** 2)) ** 2
print(fn_2) # binh phuong cua fn (A - B)
Ma trận chuyển vị
1
2
3
4
5
6
7
8
A = np.array([
[1, 2, 3],
[4, 6, 1]
], dtype=np.float64)
print(A)
print(A.T) #ma tran chuyen vi (transpose)
print(A.shape)
print(A.T.shape)
Vector, reshape, matrix
1
2
3
4
5
6
# tao vector --> reshape --> matrix
A = np.arange(12).reshape(3, -1) #-1: may tu tinh
print(A)
print(A.shape)
B = np.random.randn(3, 4)
print(A * B) # nhan theo dang element-wise (theo cap)
Phép nhân ma trận
1
2
3
4
5
6
7
# nhan 2 ma tran (mxn) vs (nxp)
A = np.arange(12).reshape(3, -1)
B = np.random.randn(4, 2)
C = np.dot(A, B) # nhan ma tran
print(A)
print(B)
print(C) #C.shape = (3, 2)
Phép Frobineus norm nhanh
1
2
3
4
5
6
7
8
9
# Frobineus norm (tinh nhanh)
A = np.random.randn(2, 3)
C = np.dot(A, A.T) #C ma tran vuong.
fn_2_new = np.sum(np.diag(C))
print(fn_2_new)
fn_2_new2 = np.trace(C)
print(fn_2_new2)
Khởi tạo bộ sinh số ngẫu nhiên
1
2
3
4
5
6
7
8
9
10
'''khoi tao bo sinh so ngau nhien'''
np.random.seed()
v1 = np.random.randn() #1 value vo huong
v2 = np.random.randn(3) # vector
v3 = np.random.randn(2, 3) #matrix, randn (random normal)
print(v1)
print(v2)
print(v3)
Sử dụng hoán vị
1
2
#hoan vi
np.random.permutation(5) # permutation: hoan vi
Link tham khảo
Tài liệu tham khảo
Machine learning cơ bản
Hết.