Tải bản đầy đủ (.pdf) (13 trang)

Bài 5 vector và ma trận

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (874.97 KB, 13 trang )

ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

BÀI 5
MA TRẬN VÀ VECTOR
1. Định nghĩa ma trận và vector
Ma trận: là một mảng 2 chiều. Trong Python mảng 2 chiều có thể xem là một List của List.
Ví dụ: A=[ [1,2,3], [4,5,6], [7,8,9] ]
Kích thước: Kích thước của 1 ma trận = số hàng * số cột.
Ví dụ: Ma trận B có 4 hàng và 3 cột, ta gọi là ma trận 4 x 3
Ta cũng có thể hiểu ma trận là một sheet với số hàng và số cột nhất định trong excel.
Vector: là ma trận với 1 cột và nhiều hàng (n * 1)
Kích thước: (cịn được gọi là chiều vector – vector dimension) là số hàng của vector.
Ví dụ:


Vector có 4 hàng là vector 4 chiều.



Vector tương tự như 1 cột trong excel với số hàng nhất định.

2. Khởi tạo ma trận và vector với NumPy
2.1. Khởi tạo ma trận
Ta có thể khởi tạo ma trận với NumPy bằng np.array:
np.array(object, dtype=None, ndmin=0)
Trong đó:


Object: một mảng 2 chiều, ta có thể sử dụng một list của list.





dtype: kiểu dữ liệu của các phần tử trong ma trận



ndmin: số chiều tối thiểu khi return object, nên đặt = 2 để tiện cho việc indexing ma
trận cho Machine Learning.

Ví dụ:
import numpy as np #import numpy and uses shorter keyword
_A = [ [1, 2, 3], [4, 5, 6] ] #array-like object
A = np.array(_A) #create a 2-dimension array (matrix) from _A
print(A) #print matrix A


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Ma trận này cũng tương tự như bảng sau:

Khởi tạo vector

2.2.

Ta khởi tạo vector như ma trận nhưng chỉ có 1 cột (mảng 1 chiều). Ta có thể xem đây là 1
List.
import numpy as np #import numpy and uses shorter keyword

_a = [ 1, 2, 3, 4 ] #array-like object
a = np.array(_a) #create a 1-dimension array (vector) from _a
print(‘Vector 4 chiều:’, a) #print vector a
Ví dụ:

3. Truy cập đến ma trận và vector
Ta có thể truy cập vào ma trận và vector theo cấu trúc:
Matrix_name[row_index, column_index]
Trong đó:


Row_index, column_index có thể là kí tự ‘:’ với ý nghĩa lấy toàn bộ những phần tử
theo hàng/ cột.

Ví dụ:
import numpy as np #import numpy and uses shorter keyword
_a = [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] #array-like object
a = np.array(_a) #create a 2-dimension array (matrix) from _a


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

print(‘a[0, 1]:’, a[0, 1]) #print a[0, 1] element
print(‘a[:, 0]:’, a[:, 0]) #print a[:, 0] elements
print(‘a[1, :]:’, a[1, :]) #print a[1, :] elements
4. Các toán tử với ma trận và vector
4.1. Cộng và trừ với ma trận


Các phép toán cộng và trừ với ma trận là phép toán “element-wise”, nghĩa là phép toán với
từng phần tử tương ứng.
Tương tự với trừ:

Lưu ý: Để cộng và trừ 2 ma trận, kích thước của cả hai phải giống nhau.
Ví dụ :

4.2. Nhân và chia ma trận với số
Để nhân và chia ma trận với số, ta chỉ cần nhân/chia từng phần tử của ma trận với số đó.

Tương tự với chia:


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Ví dụ:

4.3.

Nhân ma trận với vector

Khi nhân ma trận với vector, ta lấy các phần tử trong cột số của vector nhân lần lượt với các
hàng của ma trận để được các tích, sau đó lấy tổng của các tích rồi cho vào từng hàng của
kết quả. Chúng ta có thể hình dung như sau:

Kết quả của phép tính ln là một vector. Số cột của ma trận phải bằng với số hàng của
vector.
Một ma trận m * n nhân với một vector n * 1 sẽ có tích là một vector m * 1

Phân tích:
Đầu tiên, ta xoay ngang vector

lại thành

Sau đó nhân lần lượt từng dịng của ma trận với

Cuối cùng lấy tổng của từng hàng:

:


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Phép nhân ma trận – vector trong NumPy:
Trong NumPy, để nhân ma trận với vector như trên, ta có thể dùng:
Matrix_name.dot(vector)
Từ phiên bản 3.5 trở lên Python đã hỗ trợ toán tử @:
Matrix @ vector
Ví dụ:

Thực hiện từng bước:

Đầu tiên xoay ngang b:

Nhân từng dòng a với b:
Kết quả phép nhân là tổng từng dòng



ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

4.4. Nhân ma trận với ma trận
Chúng ta nhân 2 ma trận bằng cách tách 1 ma trận ra thành nhiều vector rồi nhân, sau đó
ghép các kết quả lại.

Để nhân 2 ma trận, số cột của ma trận 1 phải bằng số hàng ở ma trận 2.
Một ma trận m * n nhân với một ma trận n * o sẽ cho kết quả là một ma trận m * o
Phân tích:
Đầu tiên tách ma trân thứ 2 thành 2 vector nhỏ:

Nhân ma trận đầu lần lượt với 2 vector

Kết quả là 2 vector có cùng kích thước:



thành

:



Cuối cùng, ghép 2 vector lại với nhau:
Phép nhân ma trận – ma trận với NumPy:
Cũng như nhân ma trận với vector, trong NumPy ta có thể dùng:
Matrix1.dot(matrix2)

Hoặc
Matrix1 @ matrix2
Ví dụ:



;

;


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Thực hiện từng bước:

Đầu tiên tách ma trân thứ 2 thành 2 vector nhỏ:

Nhân ma trận đầu lần lượt với 2 vector

Kết quả là 2 vector có cùng kích thước:



thành

:







ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Cuối cùng, ghép 2 vector lại với nhau:
Tính chất của phép nhân ma trận:
Phép nhân ma trận khơng có tính chất giao hốn.

Phép nhân ma trận có tính chất kết hợp.

Identity matrix (ma trận đơn vị):

4.5.

Identity matrix là ma trận mà khi nhân với bất kì ma trận khác cùng kích thước, ma trận đó
sẽ khơng đổi. Phép nhân với identity matrix có tính chất giao hốn. Chúng ta có thể xem
identity matrix là “số 1” của ma trận.
Cấu trúc của identity matrix là 1 ma trận có số 1 trên đường chéo.
Ví dụ:

Ta có thể tạo một identity matrix trong NumPy bằng hàm eye:
np.eye(x)
Với x là kích thước của identity matrix.
Ví dụ:



ĐỀ CƯƠNG BÀI GIẢNG

4.6.

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Phép nhân “element-wise” với ma trận

Đối với phép nhân element-wise, kết quả sẽ là một ma trận với những phần tử là tích của các
phần tử là tích của 2 phần tử tương ứng trong 2 ma trận.

Với NumPy, ta có thể thực hiện phép nhân element-wise bằng tốn tử *
Ví dụ:

4.7.

Tốn tử logic với ma trận

Ta hồn tồn có thể thực hiện các toán tử logic với ma trận. Kết quả trả ra sẽ được ghi vào
một ma trận với kích thước tương đương.
Ví dụ:

4.8. Inverse matrix (ma trận khả nghịch)
Inverse matrix được kí hiệu bằng: A-1
Tích của ma trận với ma trận đảo của nó sẽ là một Identity matrix.
Tương tự như trong số tự nhiên: 2 * 2-1 = 1


ĐỀ CƯƠNG BÀI GIẢNG


IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Với NumPy function dùng để invert matrix là:
np.linalg.pinv(matrix)
Ví dụ:

Lưu ý: Identity matrix này hiển thị giá trị rất nhỏ thay cho số 0, ta có thể làm trịn để có
identity matrix chính xác. Một số ma trận không thể invert
4.9. Transpose matrix (ma trận chuyển vị)
Transpose matrix được kí hiệu là: AT
Transpose matrix là ma trận đảo hàng và cột so với ma trận gốc.
Với NumPy ta sử dụng function np.transpose() để transpose matrix.
Ví dụ:


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

Hàm size với ma trận

4.9.

Chúng ta có thể sử dụng hàm size để lấy kích thước của ma trận:
np.size(matrix, axis)
Trong đó:


matrix: ma trận cần tìm kích thước




axis: chiều, nếu là 0 sẽ trả về số hàng, 1 trả về số cột, mặc định trả về số phần tử.

Ví dụ:

4.10. Hàm sum và max/min với ma trận
Chúng ta có thể sử dụng hàm sum để lấy tổng các phần tử, max để lấy phần tử lớn nhất, min
để lấy phần tử nhỏ nhất.
Cấu trúc:
np.sum(matrix,axis)
np.max(matrix,axis)
np.min(matrix,axis)
Trong đó


matrix: ma trận cần tìm kích thước



axis: chiều, nếu là 0 sẽ tính theo cột, 1 sẽ tính theo hàng, mặc định sẽ tính trên cả ma
trận.

Ví dụ:


ĐỀ CƯƠNG BÀI GIẢNG

IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC


4.11. Lấy dữ liệu cho mảng/vector từ file sử dụng pandas
Pandas: Pandas là một thư viện mã nguồn mở được xây dựng dựa trên NumPy, sử dụng
thao tác và phân tích dữ liệu, được thiết kế để cho phép bạn làm việc với dữ liệu được gắn
nhãn hoặc quan hệ theo cách trực quan hơn. Một số đặc tính của pandas:
-

Có thể xử lý tập dữ liệu khác nhau về định dạng: chuỗi thời gian, bảng không đồng nhất,
ma trận dữ liệu
Khả năng import dữ liệu từ nhiều nguồn khác nhau như CSV, DB/SQL
Có thể xử lý vơ số phép tốn cho tập dữ liệu: subsetting, slicing, filtering, merging,
groupBy, re-ordering, and re-shaping,..
Xử lý dữ liệu mất mát theo ý người dùng mong muốn: bỏ qua hoặc chuyển sang 0
Xử lý, phân tích dữ liệu tốt như mơ hình hố và thống kê
Tích hợp tốt với các thư viện khác của python
Cung cấp hiệu suất tốt

Để cài đặt pandas nếu bạn có Anaconda chỉ cần gõ conda install pandas hoặc sử dụng
tools pip pip install pandas.
Sau khi cài đặt xong, trong Python, chúng ta cần khai báo import pandas để có thể bắt
đầu sử dụng các hàm của pandas. Vì pandas là thư viện được sử dụng thường xuyên nên nó
thường được khai báo gọn lại thành pd import pandas as pd. pd có thể thay thế bằng các từ
khác, tuy nhiên ta nên đặt là pd vì các tài liệu hướng dẫn đều ngầm quy ước như thế
Pandas có ba cấu trúc dữ liệu và nó được xây dựng dựa trên thư viện Numpy vậy nên
chúng hoạt động rất nhanh và hiệu quả: Series, DataFrame, Panel. Trong đó Panel là mảng 3
chiều. Panel thì khơng được sử dụng rãi như như Series hay DataFrame và nó cũng khơng dễ
hiển thị hay trừu tượng hoá như mảng một chiều và hai chiều. Phần sau sẽ giới thiệu cách sử


ĐỀ CƯƠNG BÀI GIẢNG


IT6073-NGƠN NGỮ LẬP TRÌNH KHOA HỌC

dụng DataFrame để đọc dữ liệu từ file csv, từ đó có thể đưa dữ liệu cho mảng/vector từ file
csv này.
Cách lấy dữ liệu vào mảng/vector:
Bước 1: Đọc dữ liệu từ file csv

Bước 2: Lấy dữ liệu vào ma trận/vector



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×