Python - Ma trận

Ma trận là một trường hợp đặc biệt của mảng hai chiều trong đó mỗi phần tử dữ liệu có cùng kích thước. Vì vậy, mọi ma trận cũng là một mảng hai chiều nhưng không ngược lại. Ma trận là cấu trúc dữ liệu rất quan trọng cho nhiều phép tính toán học và khoa học. Như chúng ta đã thảo luận về hai cấu trúc dữ liệu mảng dimnsional trong chương trước, chúng ta sẽ tập trung vào các phép toán cấu trúc dữ liệu cụ thể cho ma trận trong chương này.

Chúng tôi cũng đang sử dụng gói numpy để thao tác dữ liệu ma trận.

Ví dụ về ma trận

Hãy xem xét trường hợp ghi nhiệt độ trong 1 tuần được đo vào buổi sáng, giữa ngày, buổi tối và giữa đêm. Nó có thể được trình bày dưới dạng ma trận 7X5 bằng cách sử dụng một mảng và phương pháp định hình lại có sẵn trong numpy.

from numpy import * 
a = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = reshape(a,(7,5))
print(m)

Dữ liệu trên có thể được biểu diễn dưới dạng một mảng hai chiều như bên dưới.

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Truy cập giá trị trong ma trận

Các phần tử dữ liệu trong ma trận có thể được truy cập bằng cách sử dụng các chỉ mục. Cách truy cập giống như cách dữ liệu được truy cập trong mảng Hai chiều.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
# Print data for Wednesday
print(m[2])

# Print data for friday evening
print(m[4][3])

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

['Wed', 15, 21, 20, 19]
23

Thêm một hàng

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_r = append(m,[['Avg',12,15,13,11]],0)

print(m_r)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']
 ['Avg' '12' '15' '13' '11']]

Thêm một cột

Chúng ta có thể thêm cột vào ma trận bằng phương thức insert (). ở đây chúng ta phải đề cập đến chỉ mục nơi chúng ta muốn thêm cột và một mảng chứa các giá trị mới của các cột được thêm vào. Trong ví dụ dưới đây, chúng tôi thêm ta cột mới ở vị trí thứ năm kể từ đầu.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m_c = insert(m,[5],[[1],[2],[3],[4],[5],[6],[7]],1)

print(m_c)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

[['Mon' '18' '20' '22' '17' '1']
 ['Tue' '11' '18' '21' '18' '2']
 ['Wed' '15' '21' '20' '19' '3']
 ['Thu' '11' '20' '22' '21' '4']
 ['Fri' '18' '17' '23' '22' '5']
 ['Sat' '12' '22' '20' '18' '6']
 ['Sun' '13' '15' '19' '16' '7']]

Xóa một hàng tạo thành một Ma trận

Chúng ta có thể xóa một hàng khỏi ma trận bằng phương thức delete (). Chúng ta phải chỉ định chỉ số của hàng và giá trị trục là 0 cho một hàng và 1 cho một cột.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,[2],0)

print(m)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

Xóa một cột khỏi Ma trận

Chúng ta có thể xóa một cột khỏi ma trận bằng phương thức delete (). Chúng ta phải chỉ định chỉ mục của cột và giá trị trục là 0 cho một hàng và 1 cho một cột.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m = delete(m,s_[2],1)

print(m)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

[['Mon' '18' '22' '17']
 ['Tue' '11' '21' '18']
 ['Wed' '15' '20' '19']
 ['Thu' '11' '22' '21']
 ['Fri' '18' '23' '22']
 ['Sat' '12' '20' '18']
 ['Sun' '13' '19' '16']]

Cập nhật một hàng trong Ma trận

Để cập nhật các giá trị trong hàng của ma trận, chúng ta chỉ cần gán lại các giá trị tại chỉ mục của hàng. Trong ví dụ dưới đây, tất cả các giá trị cho dữ liệu của ngày thứ hai được đánh dấu là 0. Chỉ số cho hàng này là 3.

from numpy import * 
m = array([['Mon',18,20,22,17],['Tue',11,18,21,18],
		   ['Wed',15,21,20,19],['Thu',11,20,22,21],
		   ['Fri',18,17,23,22],['Sat',12,22,20,18],
		   ['Sun',13,15,19,16]])
    
m[3] = ['Thu',0,0,0,0]

print(m)

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

[['Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '0' '0' '0' '0']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]