- I. List vs NumPy Array
- II. Advanced Techniques in NumPy
- III. Pratice NumPy Array NumPy là một thư viện Python dành cho các tính toán khoa học. Nó cung cấp một kiểu dữ liệu đặc biệt là NumPy arrays (mảng NumPy), đây là các mảng đa chiều. Tại sao cần NumPy? Khi làm việc với dữ liệu lớn, việc xử lý từng phần tử một có thể không hiệu quả. NumPy giải quyết vấn đề này bằng cách tự động hóa việc thực thi các phép toán trên toàn bộ mảng, thay vì phải lặp qua từng phần tử. Điều này làm cho các tính toán trở nên hiệu quả và nhanh hơn đáng kể
I. List vs NumPy Array
1. Mảng (array) là gì?
Trong các khóa học toán ở trường trung học, vector thường được giới thiệu, ví dụ như một điểm (x, y) trên mặt phẳng hoặc một điểm (x, y, z) trong không gian. Về mặt toán học, một vector có thể được định nghĩa là một tuple gồm số: . Để truy cập các phần tử trong vector, chúng ta chỉ cần một chỉ số (ví dụ: ). Mảng (Arrays) là một khái quát hóa của vector, cho phép chúng ta có nhiều hơn một chỉ số để truy cập các phần tử. Ví dụ, sử dụng 2 chỉ số và sử dụng 3 chỉ số. Các dữ liệu phức tạp cũng có thể được biểu diễn bằng mảng, chẳng hạn như:
- Ảnh 2D (chiều cao × chiều rộng).
- Ảnh RGB (kênh x chiều cao x chiều rộng). So sánh List Python và NumPy Array Khi làm việc với dữ liệu trong Python, có hai cấu trúc dữ liệu phổ biến để lưu trữ chuỗi các giá trị: List Python và NumPy Array.
- List Python (List): ◦ Là một chuỗi các giá trị. ◦ Các giá trị trong một List có thể thuộc bất kỳ kiểu dữ liệu nào (ví dụ: String, Integer, Float, Boolean). Điều này có nghĩa là List có thể chứa các phần tử không đồng nhất về kiểu dữ liệu.
L = [element_1, …, element_n].- NumPy Array (Mảng NumPy): ◦ Là một tập hợp các “mục” cùng kiểu. ◦ Tất cả các mảng NumPy đều đồng nhất (homogeneous), nghĩa là các phần tử trong mảng phải có cùng kiểu dữ liệu.
np.array([element_1,…, element_n])2. Cách tạo mảng (Arrays)
List
# Create a list
lst = ["'AIO", 2025, 3.14, -1, True, [1, 2, 3],]
print("list:", lst)
# Create a list using list comprehension
n = 5
lst_zeros = [0]*n
print("Initialised list with zeros:",lst_zeros)
\#-> Initialised list with zeros: [0, 0, 0, 0, 0]NumPy Array
import numpy as np
arr = np.array([2, 0, 2, 5, 7, 11])
print("Create an array:", arr)
\#-> Create an array: [2 0 2 5 7 11]import numpy as np
# Create an array of n floats and initialise it with zeros
n = 5
arr_zeros = np.zeros(n)
print("Initialised array with zeros:", arr_zeros)
\#-> Initialised array with zeros: [0 0 0 0 0]import numpy as np
# Convert list into array of integers
Ist_int = [2, 0, 2, 5, 7, 1]
arr_int = np.array(lst_int)
print("Array from list:", arr_int)
\#-> Array from list: [2, 0, 2, 5, 7, 1]3. Arrays Indexing and Slicing
List
l_data = [4, 5, 6, 7, 8, 9]
NumPy Array
a_data = np.array([4, 5, 6, 7, 8, 9])

By default:
Start: 0
End: len(list)
Step: 1
Fancy indexing
Ở đây chúng ta có thể truy cập phần tử của Array bằng cách dùng phương thức này.
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print('arr[2], arr[6] =', arr[[1, 5]])
-> arr[2], arr[6] = [2 6]Masking
Truy cập phần tử của array theo điều kiện. Tạo mảng boolean
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
idx = (4 < arr) & (arr % 3 == 0) # những chỉ số thỏa điều kiện
print(idx)
arr1 = arr[idx]
# arr[(4 < arr) & (arr % 3 == 0)]
print(arr1)
->
[False False False False False True False False True False]
[6 9]np.where()
# Sử dụng numpy.where()
idx = np.where((4 < arr) & (arr % 3 == 0))
print(arr[idx])
-> [6 9]4. Add an element
List Thêm giá trị vào cuối list:
l_data = [4, 5, 6, 7, 8, 9]
element = 0
l_data.append(element)
Chèn giá trị vào vị trí index = 0:
l_data.insert(0,1)
NumPy Array
a_data = np.array([4, 5, 6, 7, 8, 9])
element = 0
np.append(a_data, element)
np.insert(a_data,0,1)
5. Update an element
List Thay đổi giá trị ở index 2 = 1:
l_data = [4, 5, 6, 7, 8, 9]
l_data[2] = 1
Thêm một list [2,3] vào cuối
l_data.extend([2,3])
NumPy Array
a_data = np.array([4, 5, 6, 7, 8, 9])
a_data[2] = 1
np.append(a_data,[2,3])