Cách nối mảng NumPy
NumPy là thư viện tuyệt vời làm việc với mảng trong Python. Nó bao phủ mọi thứ từ tạo đến thao tác mảng mọi kích thước. Không ngạc nhiên NumPy đi kèm tiện ích nối mảng.
Phương thức numpy.concatenate() nối hai hoặc nhiều mảng thành một mảng đơn.
Trong hướng dẫn này, chúng ta sẽ nói về mảng NumPy là gì và cách nối chúng. Chúng ta sẽ đi qua vài ví dụ giúp bạn bắt đầu. Hãy bắt đầu!
Cấu trúc mảng
Mảng NumPy là loại mảng làm việc với thư viện NumPy. Nó trông như mảng khác nhưng lưu trong đối tượng ndarray:
array([1, 2, 3])
Để làm việc mảng NumPy, cần import thư viện numpy:
import numpy as np
Chúng ta sẽ nối hai mảng. Mảng đầu chứa tất cả số từ 1 đến 9 (bao gồm). Mảng hai chứa tất cả số từ 10 đến 18 (bao gồm).
Hãy tạo mảng này dùng phương thức arange():
first_array = np.arange(1, 10).reshape(3, 3) second_array = np.arange(10, 19).reshape(3, 3) print(first_array) print(second_array)
Mã này tạo hai mảng. Mỗi mảng là mảng 2d. Chúng ta làm mảng 2d bằng phương thức reshape() tạo lưới 3×3 cho mỗi mảng:
81% người tham gia cho biết họ cảm thấy tự tin hơn về cơ hội việc làm công nghệ sau khi tham gia bootcamp. Được ghép nối với bootcamp ngay hôm nay.
Sinh viên trung bình tốt nghiệp bootcamp mất chưa đến sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được việc đầu tiên.
[[1 2 3] [4 5 6] [7 8 9]] [[10 11 12] [13 14 15] [16 17 18]]
Chúng ta giờ có hai mảng để làm việc! Hãy nối chúng dùng concatenate().
Nối mảng NumPy
Bạn có thể nối mảng trên hai trục: theo hàng (row) hoặc theo cột (column). Thực hiện bằng phương thức concatenate(). Phương thức nối có thể gộp mảng 1d, 2d, 3d, 4d, và mảng chiều cao hơn.
Nối theo hàng (Row)
Chúng ta bắt đầu nối hai mảng theo hàng. Điều này căn chỉnh mục trong hai mảng theo hàng và gộp thành một mảng:
final_array = np.concatenate((first_array, second_array)) print(final_array)
Chúng ta chỉ định tuple bên trong hàm concatenate(). Tuple này chứa danh sách mảng muốn nối. Không tham số, concatenate() nối theo hàng.
Mã trả về:
[[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12] [13 14 15] [16 17 18]]
Mảng được nối theo hàng.
Nối theo cột (Column)
Bạn có thể dùng phương thức concatenate gộp hai mảng theo cột.
Để làm vậy, cần tham số mới: axis. Mặc định giá trị 0. Tương ứng trục x, hoặc trục hàng. Chúng ta ghi đè giá trị đặt thành 1. Sẽ gộp hai mảng theo cột.
Hãy nối hai mảng theo cột:
final_array = np.concatenate((first_array, second_array), axis=1) print(final_array)
Mã gần như giống ví dụ trước. Khác biệt là chỉ định tham số axis=1. Hãy xem chạy mã:
[[ 1 2 3 10 11 12] [ 4 5 6 13 14 15] [ 7 8 9 16 17 18]]
Mảng được gộp theo cột.
Nối nhiều hơn hai mảng
Phương thức concatenate() có thể nối bất kỳ số lượng mảng nào. Hãy thử nối ba mảng trên trục ngang. Mảng làm việc chứa tất cả số trong phạm vi:
- 1 đến 9 (bao gồm).
- 10 đến 18 (bao gồm).
- 19 đến 27 (bao gồm).
Hãy định nghĩa mảng trong Python:
first_array = np.arange(1, 10).reshape(3, 3) second_array = np.arange(10, 19).reshape(3, 3) third_array = np.arange(19, 28).reshape(3, 3)
Tiếp theo, dùng concatenate gộp chúng:
final_array = np.concatenate((first_array, second_array, third_array), axis=1) print(final_array)
Chúng ta chỉ định ba mảng như tuple trong phương thức concatenate(). Khi kết hợp, mảng này tương ứng tất cả số từ 1 đến 27.
Hãy chạy chương trình:
[[ 1 2 3 10 11 12 19 20 21] [ 4 5 6 13 14 15 22 23 24] [ 7 8 9 16 17 18 25 26 27]]
Ba mảng giờ gán cho biến "final_array". Chúng ta in biến ra console chứng minh mảng đã gộp thành công.
Kết luận
Phương thức NumPy concatenate() nối hai hoặc nhiều mảng NumPy. Mảng nối theo trục dọc mặc định. Bạn có thể nối theo trục ngang dùng cờ axis=1.
Bạn có thể nối hai hoặc nhiều mảng 1d dùng vstack và hstack. concatenate() hiệu quả hơn các phương pháp này. concatenate() cũng hỗ trợ nối mảng 2d, 3d, và mảng chiều cao hơn.
Bây giờ bạn đã sẵn sàng nối mảng NumPy như chuyên gia Python!