Trong hướng dẫn này, bạn sẽ học cách làm phẳng một mảng bằng chức năng làm phẳng NumPy, nghĩa là một mảng được thu gọn thành một chiều. Hàm làm phẳng NumPy cho phép bạn biến mảng nhiều chiều thành mảng một chiều. Hàm này cho phép bạn dễ dàng làm phẳng các mảng theo nhiều cách khác nhau, bao gồm cả theo cột và theo hàng
Đến cuối hướng dẫn này, bạn sẽ học được
- Cách làm phẳng một mảng NumPy theo hàng
- Làm thế nào để làm phẳng một cột mảng NumPy khôn ngoan
Mục lục
- Hiểu chức năng làm phẳng NumPy
- Làm phẳng một mảng NumPy theo hàng
- Làm phẳng một cột mảng NumPy khôn ngoan
- Làm phẳng danh sách danh sách Python với NumPy Flatten
- Các câu hỏi thường gặp
- Phần kết luận
- Tài nguyên bổ sung
Hiểu chức năng làm phẳng NumPy
Trước khi đi sâu vào cách sử dụng chức năng làm phẳng NumPy, hãy xem cách thức hoạt động của chức năng này. So với nhiều hàm NumPy khác, hàm này tương đối đơn giản
Phương thức này nhận một tham số tùy chọn, duy nhất,
# Flatten an Array Row-Wise
import numpy as np
arr = np.array[[
[1, 2, 3],
[4, 5, 6]
]]
flattened = arr.flatten[]
print[flattened]
# Returns: [1 2 3 4 5 6]
0, xác định cách mà mảng được làm phẳng. Chúng ta hãy xem định nghĩa của phương thức# Understanding the NumPy Flatten Method
import numpy as np
ndarray.flatten[order='C']
Trong đoạn mã trên, chúng ta có thể thấy rằng phương thức được áp dụng cho một mảng. Phương thức trả về một bản sao của mảng đầu vào, được làm phẳng thành một chiều
Hãy nhanh chóng xem những tùy chọn nào có sẵn cho tham số
# Flatten an Array Row-Wise
import numpy as np
arr = np.array[[
[1, 2, 3],
[4, 5, 6]
]]
flattened = arr.flatten[]
print[flattened]
# Returns: [1 2 3 4 5 6]
0
2, đối số mặc định, làm phẳng hàng chính của mảng [kiểu C]# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
3, làm phẳng mảng theo cột [kiểu Fortran]# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
4, làm phẳng theo thứ tự cột lớn nếu mảng liền kề trong bộ nhớ# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
5, làm phẳng mảng theo thứ tự các phần tử xuất hiện trong bộ nhớ# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
Trong phần sau, bạn sẽ tìm hiểu cách làm phẳng các mảng NumPy theo hàng bằng cách sử dụng chức năng làm phẳng NumPy
Làm phẳng một mảng NumPy theo hàng
Trong phần này, bạn sẽ học cách sử dụng phương thức làm phẳng NumPy để làm phẳng một mảng theo hàng. Điều này có nghĩa là các mục được thêm vào dựa trên các mảng mà chúng xuất hiện. Để làm phẳng các mảng theo hàng, bạn có thể sử dụng đối số mặc định của
# Flatten an Array Row-Wise
import numpy as np
arr = np.array[[
[1, 2, 3],
[4, 5, 6]
]]
flattened = arr.flatten[]
print[flattened]
# Returns: [1 2 3 4 5 6]
0Hãy xem cách bạn có thể làm phẳng một mảng NumPy theo hàng
# Flatten an Array Row-Wise
import numpy as np
arr = np.array[[
[1, 2, 3],
[4, 5, 6]
]]
flattened = arr.flatten[]
print[flattened]
# Returns: [1 2 3 4 5 6]
Hãy chia nhỏ những gì chúng ta đã làm trong khối mã ở trên
- Chúng tôi đã nhập NumPy dưới dạng
1# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
- Sau đó, chúng tôi đã tạo một mảng hai chiều,
2# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
- Sau đó, chúng tôi đã tạo một mảng mới
3, đây là kết quả của việc áp dụng phương thức# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
4 cho mảng# Flatten an Array Row-Wise import numpy as np arr = np.array[[ [1, 2, 3], [4, 5, 6] ]] flattened = arr.flatten[] print[flattened] # Returns: [1 2 3 4 5 6]
Điều quan trọng cần lưu ý là phương thức này không sửa đổi mảng ban đầu mà trả về một bản sao phẳng của mảng
Làm phẳng một cột mảng NumPy khôn ngoan
Trong phần này, bạn sẽ tìm hiểu cách làm phẳng cột mảng NumPy, nghĩa là các mục được làm phẳng theo thứ tự xuất hiện của chúng. Điều này có nghĩa là mục đầu tiên của mỗi mảng được làm phẳng, sau đó là mục thứ hai, v.v.
Để làm phẳng một mảng NumPy theo cột, chúng ta có thể chuyển đối số của
# Flatten an Array Row-Wise
import numpy as np
arr = np.array[[
[1, 2, 3],
[4, 5, 6]
]]
flattened = arr.flatten[]
print[flattened]
# Returns: [1 2 3 4 5 6]
5 sang phương thức làm phẳng________số 8Trong phần sau, bạn sẽ tìm hiểu cách sử dụng NumPy để làm phẳng danh sách các danh sách trong Python bằng cách sử dụng phương thức làm phẳng NumPy
Làm phẳng danh sách danh sách Python với NumPy Flatten
Phương thức làm phẳng NumPy cũng có thể được sử dụng để làm phẳng danh sách các danh sách Python. Hạn chế lớn nhất ở đây là do mảng NumPy chỉ có thể chứa các giá trị số, điều này không thể được sử dụng cho tất cả các loại danh sách của danh sách
Hãy xem cách chúng ta có thể sử dụng phương thức làm phẳng để làm phẳng một danh sách các danh sách trong Python
# Flatten a List of Lists with NumPy flatten[]
import numpy as np
list_of_lists = [
[1, 2, 3],
[4, 5, 6]
]
flattened = np.array[list_of_lists].flatten[]
print[list[flattened]]
# Returns: [1, 2, 3, 4, 5, 6]
Tương tự, bạn có thể sử dụng các đối số khác nhau để sửa đổi cách các danh sách danh sách này được làm phẳng bằng NumPy
Các câu hỏi thường gặp
Tại sao tính năng làm phẳng NumPy không hoạt động?
Phương thức làm phẳng NumPy không sửa đổi một mảng, mà trả về một bản sao của mảng. Điều này có nghĩa là bạn cần gán bản sao cho một biến mới
Làm phẳng NumPy khác với NumPy ravel và định hình lại như thế nào?
Cả hai phương thức ravel[] và reshape[] đều trả về một dạng xem, nếu có thể. Trong khi đó, phương thức flatten[] trả về một bản sao
NumPy có bị làm phẳng nhanh hơn NumPy ravel không?
Phương thức NumPy ravel[] hầu như luôn nhanh hơn NumPy flatten[]. Điều này là do bằng cách tạo một bản sao, trước tiên Python sẽ cần cấp phát bộ nhớ mới
Phần kết luận
Trong hướng dẫn này, bạn đã học cách sử dụng phương thức NumPy flatten[]. Phương pháp cho phép bạn san bằng mảng nhiều chiều thành mảng một chiều. Trước tiên, bạn đã học cách xác định phương thức và tham số khả dụng là gì. Sau đó, bạn đã học cách sử dụng phương thức làm phẳng để làm phẳng một mảng theo cột và theo hàng. Cuối cùng, bạn đã học cách sử dụng phương thức để làm phẳng một danh sách các danh sách