× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Ma trận trong Python và một số thao tác tạo mà lập trình viên nên biết

21/09/2021 01:01

Ma trận Python là một trường hợp đặc biệt của cấu trúc dữ liệu hai chiều, trong đó mỗi phần tử dữ liệu có cùng kích thước, và các số được sắp xếp thành các hàng và cột. Mọi ma trận đều 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 quan trọng cho phép tính toán và khoa học. Trong bài viết này, hãy cùng T3H tìm hiểu thêm thông tin về ma trận trong Python cũng như một số thông tin về ma trận này!



Sử dụng ma trận trong Python với Numpy

Để thực hiện các thao tác dữ liệu ma trận, bạn có thể sử dụng gói numpy. NumPy là thư viện được viết bằng Python nhằm phục vụ cho việc tính toán khoa học, hỗ trợ nhiều kiểu dữ liệu đa chiều giúp cho việc tính toán, lập trình, làm việc với các hệ cơ sở dữ liệu cực kì thuận tiện. Bạn có thể sử dụng các các phép toán và mảng (array) được định nghĩa trong numpy để tạo ma trận. Array này là một đối tượng mảng đa chiều thuần nhất tức là mọi phần tử đều cùng 1 kiểu.

Một số thao tác phép toán trong Numpy

  1. add (): - Hàm này được sử dụng để thực hiện phép cộng ma trận phần tử wise 
  2. subtract (): - Hàm này dùng để thực hiện phép trừ ma trận phần tử .
  3. split (): - Hàm này được sử dụng để thực hiện phép chia ma trận phần tử wise.

Ví dụ

# Python code to demonstrate matrix operations

# add(), subtract() and divide()

# importing numpy for matrix operations

import numpy

# initializing matrices

x = numpy.array([[1, 2], [4, 5]])

y = numpy.array([[7, 8], [9, 10]])

# using add() to add matrices

print ("The element wise addition of matrix is : ")

print (numpy.add(x,y))

  

# using subtract() to subtract matrices

print ("The element wise subtraction of matrix is : ")

print (numpy.subtract(x,y))

  

# using divide() to divide matrices

print ("The element wise division of matrix is : ")

print (numpy.divide(x,y))

Kết quả

The element wise addition of matrix is : 

[[ 8 10]

 [13 15]]

The element wise subtraction of matrix is : 

[[-6 -6]

 [-5 -5]]

The element wise division of matrix is : 

[[ 0.14285714  0.25      ]

 [ 0.44444444  0.5       ]]
  1. Nhân (): - Hàm này được sử dụng để thực hiện phép nhân ma trận phần tử .
  2. dot (): - Hàm này được sử dụng để tính toán phép nhân ma trận, chứ không phải phép nhân phần tử wise .
  3. sqrt (): - Hàm này dùng để tính căn bậc hai của từng phần tử của ma trận.
  4. sum (x, axis): - Hàm này dùng để cộng tất cả các phần tử trong ma trận . Đối số "trục" tùy chọn tính tổng cột nếu trục là 0tổng hàng nếu trục là 1 .
  5. “T”: - Đối số này được sử dụng để chuyển vị trí của ma trận được chỉ định.

 

Ví dụ về ma trận trong Python

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

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']]

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

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

23

Một số thao tác tạo ma trận trong Python

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']]

 

>>> Đọc thêm: Biến trong Python - Bạn đã biết gì về biến trong Python

 

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, một cột mới đã được thêm từ vị trí thứ 5

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ỉ số 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']]

Kết luận: Việc sử dụng NumPy trong việc tạo ma trận thay vì Nested list sẽ giúp bạn lập trình một cách dễ dàng hơn, đặc biệt trong việc nghiên cứu dữ liệu, khoa học.  Trên đây là các thông tin quan trọng về ma trận trong Python. Bạn có thể tìm hiểu thêm thông tin về Python tại mục blog của Viện công nghệ thông tin T3H.