Rate this post

numpy.reshape() Trong Python: Hướng Dẫn Chi Tiết

NumPy là một thư viện mạnh mẽ trong Python, được sử dụng rộng rãi trong các lĩnh vực khoa học dữ liệu, học máy và tính toán khoa học. Một trong những hàm quan trọng và hữu ích nhất trong NumPy là hàm numpy.reshape(). Hàm này cho phép thay đổi hình dạng của mảng (array) mà không thay đổi dữ liệu cơ bản của nó. Bài viết này sẽ giới thiệu chi tiết về numpy.reshape(), cách sử dụng và các ví dụ minh họa.

Giới Thiệu Về numpy.reshape()

Định Nghĩa

Hàm numpy.reshape() trong NumPy cho phép bạn thay đổi hình dạng của một mảng mà không làm thay đổi dữ liệu của nó. Điều này có nghĩa là bạn có thể chuyển đổi một mảng 1 chiều thành một mảng 2 chiều, hoặc ngược lại, và nhiều kiểu chuyển đổi khác.

Cú Pháp

numpy.reshape(arr, newshape, order='C')
  • arr: Mảng đầu vào cần thay đổi hình dạng.
  • newshape: Hình dạng mới mong muốn. Đây có thể là một tuple hoặc một giá trị nguyên.
  • order (tùy chọn): Xác định cách thức đọc/gán các phần tử trong mảng. Các giá trị có thể là 'C' (theo thứ tự C, hàng chính), 'F' (theo thứ tự Fortran, cột chính), hoặc 'A' (Fortran nếu mảng là Fortran contiguous trong bộ nhớ, nếu không thì là C).

Giá Trị Trả Về

Hàm numpy.reshape() trả về một mảng mới với hình dạng mong muốn.

Sử Dụng numpy.reshape()

Ví Dụ 1: Chuyển Đổi Mảng 1 Chiều Thành Mảng 2 Chiều

Dưới đây là ví dụ về cách sử dụng numpy.reshape() để chuyển đổi một mảng 1 chiều thành một mảng 2 chiều.

import numpy as np

# Mảng 1 chiều ban đầu
arr = np.array([1, 2, 3, 4, 5, 6])

# Chuyển đổi thành mảng 2 chiều 2x3
new_arr = np.reshape(arr, (2, 3))
print(new_arr)

Kết quả:

[[1 2 3]
 [4 5 6]]

Ví Dụ 2: Chuyển Đổi Mảng 1 Chiều Thành Mảng 3 Chiều

import numpy as np

# Mảng 1 chiều ban đầu
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

# Chuyển đổi thành mảng 3 chiều 2x2x2
new_arr = np.reshape(arr, (2, 2, 2))
print(new_arr)

Kết quả:

[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

Các Trường Hợp Sử Dụng numpy.reshape()

Thay Đổi Kích Thước Mảng Để Phân Tích Dữ Liệu

Trong khoa học dữ liệu, bạn thường cần thay đổi kích thước của các mảng để phù hợp với các thuật toán phân tích dữ liệu hoặc học máy. numpy.reshape() giúp bạn dễ dàng thực hiện điều này.

Chuẩn Bị Dữ Liệu Đầu Vào Cho Mô Hình Học Máy

Khi làm việc với các mô hình học máy, bạn thường cần thay đổi hình dạng của dữ liệu để phù hợp với yêu cầu của mô hình. Ví dụ, bạn có thể cần chuyển đổi một mảng 3 chiều thành 2 chiều trước khi đưa nó vào mô hình.

import numpy as np

# Mảng 3 chiều ban đầu
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

# Chuyển đổi thành mảng 2 chiều
new_arr = np.reshape(arr, (4, 2))
print(new_arr)

Kết quả:

[[1 2]
 [3 4]
 [5 6]
 [7 8]]

Kết Hợp Nhiều Mảng Thành Một Mảng Duy Nhất

Bạn có thể sử dụng numpy.reshape() để kết hợp nhiều mảng nhỏ thành một mảng lớn hơn để thuận tiện cho việc xử lý dữ liệu.

import numpy as np

# Các mảng nhỏ
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])

# Kết hợp thành mảng lớn
combined_arr = np.concatenate((arr1, arr2, arr3))
reshaped_arr = np.reshape(combined_arr, (3, 3))
print(reshaped_arr)

Kết quả:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

Lưu Ý Khi Sử Dụng numpy.reshape()

Tương Thích Kích Thước

Tổng số phần tử trong hình dạng mới phải bằng tổng số phần tử trong mảng ban đầu. Nếu không, bạn sẽ nhận được lỗi.

import numpy as np

arr = np.array([1, 2, 3, 4])

# Sẽ gây lỗi vì tổng số phần tử không tương thích
# new_arr = np.reshape(arr, (3, 2))  # ValueError: cannot reshape array of size 4 into shape (3,2)

Lựa Chọn Thứ Tự (Order)

Việc lựa chọn thứ tự đọc/gán phần tử có thể ảnh hưởng đến kết quả cuối cùng. order='C' sẽ đọc theo hàng, trong khi order='F' sẽ đọc theo cột.

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

# Thứ tự C
new_arr_C = np.reshape(arr, (2, 3), order='C')
print("Thứ tự C:")
print(new_arr_C)

# Thứ tự F
new_arr_F = np.reshape(arr, (2, 3), order='F')
print("Thứ tự F:")
print(new_arr_F)

Kết quả:

Thứ tự C:
[[1 2 3]
 [4 5 6]]
Thứ tự F:
[[1 4 5]
 [2 3 6]]

Kết Luận

Hàm numpy.reshape() là một công cụ mạnh mẽ và linh hoạt trong NumPy, giúp bạn thay đổi hình dạng của các mảng mà không làm thay đổi dữ liệu cơ bản. Việc hiểu và sử dụng hiệu quả hàm này sẽ giúp bạn dễ dàng thao tác và phân tích dữ liệu trong nhiều tình huống khác nhau.

Hãy thực hành với các ví dụ trên để làm quen và nắm vững kỹ năng sử dụng numpy.reshape() trong Python.

Tham Khảo

  1. NumPy Documentation – numpy.reshape
  2. Real Python – NumPy Arrays
  3. W3Schools – NumPy reshape
  4. GeeksforGeeks – numpy.reshape() in Python

Những nguồn tham khảo này sẽ cung cấp thêm kiến thức và công cụ để bạn nâng cao kỹ năng của mình trong việc sử dụng NumPy và các ứng dụng của nó.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now