Khóa học
Mảng là cấu trúc dữ liệu nền tảng trong nhiều ngôn ngữ lập trình, cung cấp cách lưu trữ tập hợp các phần tử cùng kiểu trong một khối bộ nhớ liên tiếp—nghĩa là tất cả phần tử được lưu tuần tự không có khoảng trống. Cấu trúc này cho phép truy cập và thao tác phần tử hiệu quả.
Không giống các ngôn ngữ như C hoặc Java, Python không có kiểu dữ liệu mảng tích hợp theo nghĩa truyền thống. Thay vào đó, Python cung cấp một số lựa chọn thay thế hoạt động như mảng, mỗi lựa chọn phù hợp với các nhu cầu và kịch bản lập trình khác nhau.
Thư viện chuẩn của Python bao gồm mô-đun array, cho phép tạo các mảng gọn nhẹ và bị ràng buộc kiểu, tương tự như trong các ngôn ngữ kiểu tĩnh hơn.
Tuy nhiên, đối với tính toán số và khoa học, thư viện NumPy và ndarray (mảng n chiều) của nó đã trở thành tiêu chuẩn trong Python. Mảng NumPy cung cấp chức năng phong phú vượt xa cấu trúc mảng cơ bản do thư viện chuẩn của Python cung cấp.
Kiến thức cơ bản về Mảng
NumPy là gói nền tảng cho tính toán số trong Python, cung cấp một đối tượng mảng mạnh mẽ cùng bộ hàm để làm việc hiệu quả với các mảng này. Các ưu điểm của NumPy gồm:
• Đa chiều: Hỗ trợ nhiều hơn mảng một chiều.
• Phép toán mạnh: Bao gồm thư viện lớn các hàm toán học và thống kê.
• Vector hóa: Cho phép thao tác trên toàn bộ mảng mà không cần vòng lặp tường minh, cải thiện hiệu năng.
• Tích hợp: Hoạt động mượt mà với các thư viện khoa học khác như SciPy, Pandas và Matplotlib.
Hãy bắt đầu tạo một mảng với Numpy. Trước tiên bạn nhập NumPy rồi dùng hàm array() để tạo mảng. Hàm array() nhận một list làm đầu vào.
import numpy
my_array = numpy.array([0, 1, 2, 3, 4])
print(my_array)
# Expected output: [0 1 2 3 4]
Kiểu của my_array là numpy.ndarray.
import numpy
my_array = numpy.array([0, 1, 2, 3, 4])
print(type(my_array))
# Expected output: <class 'numpy.ndarray'>
Ví dụ về Mảng
Ví dụ tạo Mảng
Trong ví dụ dưới đây, bạn sẽ chuyển một list thành mảng bằng hàm array() của NumPy. Bạn sẽ tạo một list a_list gồm các số nguyên. Sau đó, dùng hàm array() để chuyển nó thành mảng.
import numpy as np
a_list = [1, 2, 3, 4]
print(a_list)
# Expected output: [1, 2, 3, 4]
import numpy as np
a_list = [1, 2, 3, 4]
an_array = np.array(a_list)
print(an_array)
# Expected output: [1 2 3 4]
Ví dụ thao tác với Mảng
Trong ví dụ dưới đây, bạn cộng hai mảng numpy. Kết quả là tổng từng phần tử của cả hai mảng.
import numpy as np
array_A = np.array([1, 2, 3])
array_B = np.array([4, 5, 6])
print(array_A + array_B)
# Expected output: [5 7 9]
Ví dụ về đánh chỉ mục Mảng
Bạn có thể chọn một phần tử theo chỉ mục trong mảng bằng ký pháp đánh chỉ mục.
import numpy as np
months_array = np.array(['Jan', 'Feb', 'March', 'Apr', 'May'])
print(months_array[3])
# Expected output: Apr
Bạn cũng có thể cắt một dải phần tử bằng ký pháp slicing, chỉ định một khoảng chỉ mục.
import numpy as np
months_array = np.array(['Jan', 'Feb', 'March', 'Apr', 'May'])
print(months_array[2:5])
# Expected output: ['March', 'Apr', 'May']
Ví dụ Tương tác: từ List sang Mảng
Trong ví dụ dưới đây, bạn sẽ nhập numpy với bí danh np. Tạo các mảng prices_array và earnings_array từ các list prices và earnings tương ứng. Cuối cùng, in cả hai mảng.
import numpy as np
# Lists
prices = [170.12, 93.29, 55.28, 145.30, 171.81, 59.50, 100.50]
earnings = [9.2, 5.31, 2.41, 5.91, 15.42, 2.51, 6.79]
# NumPy arrays
prices_array = np.array(prices)
earnings_array = np.array(earnings)
# Print the arrays
print(prices_array)
print(earnings_array)
# Expected output:
# [170.12 93.29 55.28 145.3 171.81 59.5 100.5 ]
# [ 9.2 5.31 2.41 5.91 15.42 2.51 6.79]
Để tìm hiểu thêm về mảng NumPy trong Python, vui lòng xem video từ khóa học Nhập môn Python cho Tài chính của chúng tôi.
Nội dung này được trích từ khóa học Nhập môn Python cho Tài chính của DataCamp do Adina Howe biên soạn.
Xem thêm Hướng dẫn Mảng NumPy trong Python.
Câu hỏi thường gặp
Sự khác nhau chính giữa mô-đun array của Python và mảng NumPy là gì?
Khác biệt chính nằm ở khả năng và trường hợp sử dụng. Mô-đun array của Python cung cấp chức năng cơ bản để tạo các mảng gọn nhẹ, ràng buộc kiểu giống như trong các ngôn ngữ như C. Trong khi đó, mảng NumPy cung cấp các tính năng nâng cao như hỗ trợ mảng đa chiều, thư viện lớn các hàm toán học và tối ưu hiệu năng thông qua vector hóa. NumPy thường được ưu tiên cho tính toán số và khoa học.
Tôi có thể dùng mô-đun array của Python cho dữ liệu kiểu chuỗi hoặc đối tượng không?
Không. Mô-đun array được thiết kế chỉ để chứa các kiểu dữ liệu cơ bản như số nguyên, số thực và tương tự. Nó không hỗ trợ chuỗi hoặc đối tượng. Với các tập hợp kiểu này, list của Python hoặc các cấu trúc dữ liệu khác như tuple hay dictionary sẽ phù hợp hơn.
Vì sao nên dùng mảng NumPy thay vì list của Python cho dữ liệu số?
Mảng NumPy được tối ưu riêng cho tính toán số. Chúng cung cấp khả năng lưu trữ và xử lý hiệu quả vượt trội so với list của Python, đặc biệt với các bộ dữ liệu lớn. Các tính năng như vector hóa cho phép thao tác trên toàn bộ mảng mà không cần vòng lặp tường minh, giúp tăng đáng kể hiệu năng và khả năng đọc của mã.