Reshape Mảng Trong Numpy - Lập Trình Từ Đầu
Có thể bạn quan tâm
Trong mảng Numpy, chúng ta có thể sử dụng kỹ thuật Array Reshaping để biến đổi kích thước của một mảng từ 1 chiều thành hai chiều, hoặc từ 2 chiều thành 1 chiều….Trong từng bài toán khác nhau mà ta sẽ cần biến đổi kích thước mảng sao cho phù hợp với các phép tính toán.
1. Shape của mảng NumpyMảng NumPy có một thuộc tính được gọi là shape được sử dụng để trả về kích thước của mảng đó. Ví dụ khai báo một mảng 2 chiều (ma trận) có kích thước 2 x 4 trong Numpy và lấy kích thước bằng thuộc tính shape như sau:
import numpy as np # Khai bao mang 2 chieu kich thuoc 2 x 4 a = np.array([ [1, 2, 3, 4], [5, 6, 7, 8] ]) # Kich thuoc mang print(a.shape)Kết quả:
(2, 4)Trong khi tạo mảng, chúng ta cũng có thể chỉ định số chiều cho một mảng Numpy thông qua thuộc tính ndim. Lưu ý rằng số chiều khác nhau thì các shape của mảng cũng sẽ khác nhau. Ví dụ ndim = 1 sẽ có shape = 1 x n, ndim = 2 sẽ có shape = m x n, ndim = 3 sẽ có shape = d x m x n
import numpy as np # Tao mang a co so chieu bang 3 a = np.array([ [1, 2, 3, 4], [5, 6, 7, 8], [9, 0, 1, 2] ], ndmin=3) # Hien thi mang a print(a) # Kich thuoc mang a print("Kich thuoc mang {0}".format(a.shape))Kết quả:
[[[1 2 3 4] [5 6 7 8] [9 0 1 2]]] Kich thuoc mang (1, 3, 4) 2. Reshape mảng NumpyReshape có nghĩa là định dạng lại kích thước cho một mảng để phù hợp với các tính toán hoặc xử lý mảng trong Numpy. Chúng ta có thể định dạng mảng 1 chiều có kích thước 1 x N thành mảng 2 chiều có kích thước m x n hay định dạng mảng 1 chiều có kích thước 1 x N thành mảng 3 chiều có kích thước d x m x n thông qua hàm np.reshape() có sẵn trong Numpy.
Ví dụ dưới đây, khai báo mảng 1 chiều có kích thước 1 x 12 và định dạng lại thành mảng 2 chiều có kích thước 4 x 3 bằng hàm np.reshape() như sau:
import numpy as np # Mang 1 chieu co kich thuoc 1 x 12 a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) print("Mang a ban dau") print(a) # Thay doi mang 1 chieu kich thuoc tu 1 x 12 sang mang 2 chieu kich thuoc 3 x 4 a = a.reshape(4, 3) print("Mang a sau khi reshape") print(a)Kết quả:
Mang a ban dau [ 1 2 3 4 5 6 7 8 9 10 11 12] Mang a sau khi reshape [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]Ví dụ tiếp theo, khai báo mảng 1 chiều có kích thước 1 x 12 và định dạng lại thành mảng 3 chiều có kích thước 2 x 3 x 2 bằng hàm np.reshape() như sau:
import numpy as np # Mang 1 chieu co kich thuoc 1 x 12 a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) print("Mang a ban dau") print(a) # Thay doi mang 1 chieu kich thuoc tu 1 x 12 sang mang 3 chieu kich thuoc 2 x 3 x 2 a = a.reshape(2, 3, 2) print("Mang a sau khi reshape") print(a)Kết quả:
Mang a ban dau [ 1 2 3 4 5 6 7 8 9 10 11 12] Mang a sau khi reshape [[[ 1 2] [ 3 4] [ 5 6]] [[ 7 8] [ 9 10] [11 12]]]Lưu ý: Số lượng phần tử có trong mảng 1 chiều phải bằng với kích thước m x n của mảng 2 chiều hoặc d x m x n đối với mảng 3 chiều.
3. Làm phẳng mảng NumpyỞ trong các ví dụ trên, chúng ta đã thực hiện được việc định dạng hay còn hiểu là biết đổi kích thước từ mảng 1 chiều có kích thước 1 x N sang các mảng 2 chiều kích thước m x n hoặc 3 chiều kích thước d x m x n.
Trong một số trường hợp, ta cần thực hiện biến đổi ngược lại từ các mảng 2 chiều hoặc 3 chiều về kích thước của mảng 1 chiều. Việc thực hiện biến đổi này sẽ được gọi là làm phẳng mảng khi đó các mảng được biến đổi sẽ trở về mảng 1 chiều có kích thước 1 x N. Để làm phẳng mảng 2 chiều hoặc 3 chiều về mảng 1 chiều, khi đó ta cần sử dụng hàm np.reshape() với tham số là -1.
Ví dụ làm phẳng mảng hai chiều về mảng 1 chiều bằng hàm np.reshape(-1) như sau:
import numpy as np # Mang 2 chieu co kich thuoc 4 x 3 a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12] ]) print("Mang a ban dau") print(a) # Thay doi mang 2 chieu 4 x 3 thanh mang 1 chieu 1 x 12 a = a.reshape(-1) print("Mang a sau khi reshape") print(a)Kết quả:
Mang a ban dau [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]] Mang a sau khi reshape [ 1 2 3 4 5 6 7 8 9 10 11 12]Ví dụ tiếp theo, làm phẳng mảng 3 chiều về mảng 1 chiều bằng hàm np.reshape(-1) như sau:
import numpy as np # Mang 3 chieu co kich thuoc 2 x 3 x 2 a = np.array([ [[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11,12]] ]) print("Mang a ban dau") print(a) # Thay doi mang 3 chieu 2 x 3 x 2 thanh mang 1 chieu 1 x 12 a = a.reshape(-1) print("Mang a sau khi reshape") print(a)Kết quả:
Mang a ban dau [[[ 1 2] [ 3 4] [ 5 6]] [[ 7 8] [ 9 10] [11 12]]] Mang a sau khi reshape [ 1 2 3 4 5 6 7 8 9 10 11 12]Từ khóa » Chuyển Mảng 1 Chiều Thành 2 Chiều Python
-
Numpy Array Reshape
-
Chuyển đổi Một Mảng 1D Thành Một Mảng 2D Trong Numpy? - HelpEx
-
9 Thủ Thuật Nhanh Cho Người Bắt đầu Học Python - Viblo
-
Chuyển Mảng 1 Chiều Sang 2 Chiều - YouTube
-
Numpy.ndarray.flatten() Trong Python - W3seo Hướng Dẫn Hàm
-
Ma Trận Trong Python Và Một Số Thao Tác Tạo Mà Lập Trình Viên Nên Biết
-
Mảng 2 Chiều - Python Dainganxanh
-
Ma Trận Trong Python
-
3.1. Khởi Tạo Một Mảng Trên Numpy — Deep AI KhanhBlog
-
FundaML 2: Làm Việc Với Ma Trận - Machine Learning Cơ Bản
-
Python — Nối Hai Mảng NumPy Một Chiều
-
Ma Trận Nâng Cao Với Thư Viện Numpy - CodeLearn
-
Tập Hợp List Lồng Nhau, Ma Trận Và Mảng Nhiều Chiều - TEK4