Professional Documents
Culture Documents
Slide 2 Numpy
Slide 2 Numpy
NGUYEN
Hong Thinh
Python Numpy
FET-UET-VNU
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
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
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
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
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 }
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
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]
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
14/23
Index and boolean mask
Python
NGUYEN
Dùng boolean mask:
Hong Thinh
1 mask = array2 >5
2 mask
3 array2 [ mask ]
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
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
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])
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