You are on page 1of 23

Python

NGUYEN
Hong Thinh

Python Numpy

NGUYEN Hong Thinh

FET-UET-VNU

Ngày 11 tháng 8 năm 2020

1/23
Module trong Python
Python

NGUYEN
Python là ngôn ngữ lập trình được module hoá gồm
Hong Thinh
nhiều thư viện chuyên dụng (gọi là các module).
Trước khi sử dụng module, cần cài đặt thư viện.Các thư
viện có thể cài đặt sử dụng lệnh pip
Để importing 1 module ta dùng lệnh import:
1 import os
2 import numpy as np
3

Module có thể gồm nhiều sub-module. Ta có thể chỉ load


một phần (sub-module):
1 from urllib . request import urlopen
2

2/23
Module trong Python
Python
Các module khác nhau có thể có các hàm cùng tên. Nếu
NGUYEN
Hong Thinh trường hợp đó xảy ra, khai báo hàm cuối cùng (gần nhất)
sẽ có giá trị. Để tránh bị nhầm giữa các module, có thể
sử dụng tên module kèm theo tên hàm:
1 # Do not use :
2 # from moduleA import func1
3 # from moduleB import func1
4 import moduleA
5 import moduleB
6 moduleA . func1 ()
7 moduleB . func1 ()
8

Có thể import nhiều module, submodule đồng thời:


1 from urllib . request import urlopen as geturl
, getproxies
2 from math import factorial as fact , gamma ,
atan as arctan
3 import random . randint , time , sys
4 3/23
Custom module
Python

NGUYEN
Có thể xây dựng module của riêng/dành riêng cho 1
Hong Thinh
project dự án. Hãy để mymodule.py vào cùng thư mục
với chương trình chính, và dùng lệnh import như bình
thường.
1 import mymodule
2

Nếu muốn chỉ rõ dường dẫn đến module, hãy sử dụng


thêm thư viện os, và set đường dẫn đến thư viện:
1 import sys
2 sys . path . append ( " / path / to / directory /
containing / your / module " )
3 import mymodule
4

4/23
Chú ý với sử dụng module trong Python
Python
Không dùng import bên trong định nghĩa.
NGUYEN
Hong Thinh 1 def func () :
2 import numpy # = > error
3

Nên import các module khác nhau trên các câu lệnh khác
nhau:
1 # import os , time
2 import os
3 import time
4

Quy tắc thứ tự: import thư viện chuẩn trước, sau đó đến
các thư viện của các bên thứ 3 , cuối cùng là thư viện
của mình.
1 import os
2 import numpy as np
3 import facenet
4 import mylibrary
5 5/23
Numpy
Python

NGUYEN
Numpy là thư viện thông dụng nhất của Python, sử dụng
Hong Thinh
cho tính toán trên ma trận
Sử dụng kiểu dữ liệu ndarray, là 1 mảng nhiều chiều, tính
toán, tìm kiếm nhanh mà không sử dụng loops
Tính toán trực tiếp theo kiểu vector/matrận (Vectorized
Computation)
1 import numpy
2 import time
3 # Nhan 2 matran 1000 x 1000
4 A = numpy . arange (1000000)
5 % time B =[ x *2 for x in A ] # 10 min ( loops )
6 % time B = A *2 # ~0.03 seconds

6/23
Khai báo khởi tạo Numpy array
Python

NGUYEN
Sử dụng các hàm của numpy ví dụ numpy.array(),
Hong Thinh
numpy.zeros() để khai báo:
1 import numpy as np
2 A = np . array ([1 ,2 ,3 ,4]) ; type ( A )
3 C =[1 ,2 ,3 ,4]; # = > kieu list

Có thể khai báo ma trận 1 chiều/2 chiều/nhiều chiều


1
2 A = np . array ([1 ,2 ,3 ,4]) ; # 1 chieu
3 B = np . array ([ A ,[4 ,5 ,6 ,8] ,[9 ,10 ,11 ,12]]) ; # 2
chieu
4 C = np . array ([ B ,B , B ])

7/23
Một vài ma trận đặc biệt và hàm thông dụng
Python

NGUYEN
Một vài ma trận đặc biệt
Hong Thinh
1
2 A = numpy . zeros ([ 3 ,4]) # = > ma tran khong 3 x4 ,
3 A = numpy . ones ([ 3 ,4]) # = > ma tran toan mot , 3 x4
4 A = numpy . eye (3) # ma tran cheo
5 A = numpy . arange (10) # vector 0 -9
6 A = numpy . arange (1 ,10 ,2) # vector 1 -3 -5..
7 A = numpy . arange (1.2 ,2.1 ,0.3)
8 # luu y numpy . arange khac voi ham \ text { range }

Một số hàm thường dùng trên ma trận:


1 A . shape () # number row and number column
2 A . dim ()
3 A . itemize ()
4 A . reshape () # sap xep lai cac phan tu
5 dtype = ... # ep kieu cho moi phan tu trong
array

8/23
Index và Slicing
Python
Kiểu numpy.array() sử dụng index để định vị các thành
NGUYEN
Hong Thinh phần của ma trận.
Do ma trận có thể có nhiều chiều, nên python sử dụng
axis để đánh dấu các chiều của nó:

Trên mỗi chiều (axis), index được đánh số chạy tăng dần
từ 0 hoặc giảm dần từ cuối với -1

9/23
Index và Slicing
Python

NGUYEN
Ví dụ trên ma trận 1 chiều
Hong Thinh
1 import numpy as np
2 array1 = np . arange (0 ,12)
3 array1
4 array1 [3] # 3

Ví dụ trên ma trận 2 chiều:


1 array2 = array1 . reshape (3 ,4)
2 array2
3 array2 [1 ,2] # 6

Ví dụ trên ma trận 3 chiều:


1 array3 = array1 . reshape (3 ,2 ,2)
2 array3
3 array3 [1 ,0 ,1] # 5

10/23
Index và Slicing
Python

NGUYEN
Python cho phép sử dụng slicing trên index để lấy một
Hong Thinh
nhóm các thành phần trên matrận
Slicing để nhóm các phần tử từ startindex đến stopindex,
với bước nhảy step ta dùng cấu trúc: startindex :
stopindex+1:step
Ví dụ trên ma trận 1 chiều
1 array1 [1:7] # array [1 ,2 ,3 ,4]
2 array1 [1:7:2]
3 array [4:]
4 array [:9]
5 array [ -3: -6]
6 array1 [ -3: -6: -1]
7 array1 [ -9: -7]
8 array1 [3: -2]

Note: Slicing luôn bỏ qua phần tử cuối cùng


Nếu bước nhảy là số âm ?
11/23
Index và Slicing
Python

NGUYEN
Ví dụ trên ma trận 2 chiều
Hong Thinh
1 a = np . arange (0 ,6) + np . arange (0 ,60 ,10) . reshape
(6 ,1)
2 a

12/23
Index và Slicing
Python
Bài tập ví dụ: Cho ma trận như hình vẽ:
NGUYEN
Hong Thinh
Viết chương trình để thu được các phần tử theo từng
mầu như hình.

13/23
Index and boolean mask
Python
Lấy một số phần tử thông qua Index có thể thu được theo
NGUYEN
Hong Thinh nhiều cách:
Dùng 1 ma trận/vector định vị:
1 import numpy as np
2 array1 = np . arange (0 ,12)
3 mask =[ -2 , 1 ,4]
4 array1 [ mask ]
5

Dùng pair toạ độ cho bởi tuple:


1 array2 = np . arange (0 ,12) . reshape (3 ,4)
2 array2 [(0 ,2 ,1) ,(2 ,1 ,2) ]
3

14/23
Index and boolean mask
Python

NGUYEN
Dùng boolean mask:
Hong Thinh
1 mask = array2 >5
2 mask
3 array2 [ mask ]
4

Kết hợp index với boolean mask trong định vị và gán:


1 mask = array2 >5
2 array2 [ mask ] =1
3
4

15/23
Index and boolean mask
Python

NGUYEN
Dùng boolean mask:
Hong Thinh
1 mask = array2 >5
2 mask
3 array2 [ mask ]
4

Kết hợp index với boolean mask trong định vị và gán:


1 mask = array2 >5
2 array2 [ mask ] =1
3
4

16/23
Numpy Array Broadcasting
Python
Phép toán trên các ma trận np.array có cần thoả mãn cùng
NGUYEN
Hong Thinh chiều?

17/23
Các hàm thông dụng
Python

NGUYEN
arr.max() hoặc np.max(arr); arr.min() hoặc np.min(arr):
Hong Thinh
Lấy giá trị max/min của mảng arr.
arr.sum() hoặc np.sum(arr): Tổng tất cả các phần tử
trong mảng arr.
arr.mean() hoặc np.mean(arr): Trung bình cộng của tất
cả các phần tử trong mảng arr.
np.median(arr): Trả về giá trị trung vị của mảng arr.
np.argmax, np.argmin, np.argsort : hàm trả về vị trí max,
min, sort

18/23
Bài tập
Python

NGUYEN
Thay thế các phần tử thoả mãn một điều kiện cho trước
Hong Thinh
bằng 1 giá trị khác:
1 arr = np . array ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,
9])
2 # > array ([ 0 , -1 , 2 , -1 , 4 , -1 , 6 , -1 ,
8 , -1]) ## output ?

Tạo ra các array có quy luật, dựa theo 1 array cho trước
mà không cần nhập từng số:
1 a = np . array ([1 ,2 ,3])
2 # > array ([1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3]) ##
output ?
3 # > array ([1 , 2 , 3 , 1 , 2 , 3 , 1 , 2 , 3]) ##
output ?

19/23
Bài tập
Python

NGUYEN
Tìm các phần tử chung của 2 ma trận và loại bỏ chúng
Hong Thinh
khỏi ma trận gốc
1 a = np . array ([1 ,2 ,3 ,4 ,5])
2 b = np . array ([5 ,6 ,7 ,4 ,9])
3 # 5 ,4
4 # array ([1 ,2 ,3])
5

Lấy ra các phần tử trong khoảng cho trước:


1 a = np . array ([2 , 6 , 1 , 9 , 10 , 3 , 27])
2 # cac phan tu trong khoang 5 -10
3

20/23
Bài tập
Python

NGUYEN
Swap vị trí các cột hoặc các hàng của 1 ma trận:
Hong Thinh
1 a = np . array ([[1 ,2 ,3] ,[4 ,5 ,6] ,[7 ,8 ,9])
2 # array ([4 ,5 ,6] ,[1 ,2 ,3] ,[7 ,8 ,9])
3 # array ([2 ,1 ,3] ,[5 ,4 ,6] ,[8 ,7 ,9])

Đảo ngược 1 ma trận: từ trái-phải, trên -dưới:


1 arr = np . arange (9) . reshape (3 ,3)
2 # array ([[2 , 1 , 0] , [5 , 4 , 3] , [8 , 7 , 6]])
3 # array ([[6 , 7 , 8] , [3 , 4 , 5] , [0 , 1 , 2]])

21/23
Bài tập
Python
Iris dataset là 1 tập dữ liệu được dùng nhiều trong giảng dạy
NGUYEN
Hong Thinh về Numpy và Machine learning. Nó gồm dữ liệu đo đạc thực
tế của 150 bông hoa thuộc 3 loại khác nhau. Có 4 thông số
được đo là chiều rộng/dài cánh hoa và chiều rộng/dài đài hoa
(mm). Trong phần này, chúng ta sẽ sử dụng Iris dataset là
một số ví dụ trên Numpy:
Load dữ liệu:
1 from sklearn import datasets
2
3 # import some data to play with
4 iris = datasets . load_iris ()
5 X = iris . data [: , :2] # we only take the first
two features .
6 y = iris . target

22/23
Bài tập
Python

NGUYEN
Kiểm tra các thông tin trên tập dữ liệu
Hong Thinh
Tính mean, median, standard deviation của từng cột
trong tập dữ liệu
normalization
Chuẩn hoá theo từng dữ liệu, sao cho giá trị các phần tử
trong từng cột luôn thuộc khoảng [0,1]
Chèn 1 vài phần tử bằng Nan vào các cột ở vị trí bất kỳ
(VD: (30,1), ( 41,2), (102,3))
Tìm các phần tử bị thiếu (Nan), thay thế bằng 0
Tìm kiếm giá trị phổ biến nhất trong từng cột.

23/23

You might also like