28.04.2020 Views

Sách Deep Learning cơ bản

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

32 Chương 2. Python cơ bản

2.4 Sử dụng Numpy

Vì Python là scripting language nên không thích hợp cho ML, Numpy giải quyết vấn đề trên bằng

cách xây dựng 1 thư viện viết bằng C nhưng có interface Python. Như vậy Numpy cộng hưởng 2 ưu

điểm của 2 ngôn ngữ: nhanh như C và đơn giản như Python. Điều này giúp ích rất nhiều cho cộng

đồng Machine Learning trên Python.

Mảng trong numpy gồm các phần tử có dùng kiểu giá trị, chỉ số không âm được bắt đầu từ 0, số

chiều được gọi là rank của mảng Numpy, và shape là một tuple các số nguyên đưa ra kích thước của

mảng theo mỗi chiều.

import numpy as np

a = np.array([1, 2, 3]) # Tạo array 1 chiều

print(type(a))

# Prints "<class 'numpy.ndarray'>"

print(a.shape) # Prints "(3,)"

print(a[0], a[1], a[2]) # Prints "1 2 3"

a[0] = 5 # Thay đổi phần tử vị trí số 0

print(a) # Prints "[5, 2, 3]"

b = np.array([[1,2,3],[4,5,6]]) # Tạo array 2 chiều

print(b.shape) # Prints "(2, 3)"

print(b[0, 0], b[0, 1], b[1, 0]) # Prints "1 2 4"

Ngoài ra có những cách khác để tạo array với giá trị mặc định

import numpy as np

a = np.zeros((2,2)) # Tạo array với tất cả các phần tử 0

print(a) # Prints "[[ 0. 0.]

# [ 0. 0.]]"

b = np.ones((1,2)) # Tạo array với các phần từ 1

print(b) # Prints "[[ 1. 1.]]"

c = np.full((2,2), 7) # Tạo array với các phần tử 7

print(c) # Prints "[[ 7. 7.]

# [ 7. 7.]]"

d = np.eye(2) # Tạo identity matrix kích thước 2*2

print(d) # Prints "[[ 1. 0.]

# [ 0. 1.]]"

e = np.random.random((2,2)) # Tạo array với các phần tử được tạo ngẫu nhiên

print(e) # Might print "[[ 0.91940167 0.08143941]

# [ 0.68744134 0.87236687]]"

2.4.1 Array indexing

Tương tự như list, numpy array cũng có thể slice. Tuy nhiên vì numpy array có nhiều chiều, nên khi

dùng slice phải chỉ định rõ chiều nào.

import numpy as np

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!