Nó trả về một đối tượng xem mới nếu có thể, nếu không thì trả về một bản sao. Nhưng trong hầu hết các trường hợp, nó trả về một khung nhìn và do đó, nó có hiệu suất rất tốt với các mảng lớn
Hãy hiểu điều này với nhiều ví dụ hơn,
quảng cáo
Đầu tiên, nhập mô-đun numpy,
import numpy as np
Chuyển đổi hình dạng của mảng Numpy bằng cách sử dụng numpy. định hình lại[]
sử dụng numpy. reshape[] để chuyển đổi mảng numpy 1D thành mảng 2D Numpy
Trước tiên hãy tạo một mảng numpy 1D từ một danh sách,
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]
Bây giờ, giả sử chúng ta muốn chuyển đổi mảng 1D này thành mảng 2D hoặc ma trận có dạng [3X3] i. e. 3 hàng và 3 cột. Hãy xem cách thực hiện điều đó bằng cách sử dụng reshape[],
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]
Đầu ra.
______3
Chúng tôi đã chuyển mảng và một bộ [hình dạng] làm đối số cho numpy. reshape[] và nó trả về chế độ xem 2D mới của mảng đã truyền.
Hình dạng mới phải tương thích với hình dạng ban đầu
Hình dạng mới được cung cấp trong hàm reshape[] phải tương thích với hình dạng của mảng được truyền vào.
Giả sử nếu chúng ta đang cố gắng chuyển đổi một mảng 1D có độ dài N thành một mảng 2D Numpy có hình dạng [R,C], thì R * C phải bằng N, nếu không nó sẽ tăng một . Ví dụ:
- Chúng ta có thể chuyển đổi một mảng numpy gồm 9 phần tử thành ma trận 3X3 hoặc mảng 2D
- Chúng ta có thể chuyển đổi một mảng numpy gồm 12 phần tử thành ma trận 2X6 hoặc ma trận 6X2 hoặc ma trận 4X3 hoặc ma trận 3&4
- Nếu chúng ta cố gắng chuyển đổi nó thành một ma trận có hình dạng khác thì nó sẽ báo lỗi,
Hãy kiểm tra một ví dụ hoặc chuyển đổi không tương thích
arr2D = np.reshape[arr, [3, 2]]
Lỗi,
ValueError: cannot reshape array of size 9 into shape [3,2]
Chúng tôi đã cố gắng tạo một ma trận/mảng 2D có hình dạng [3, . e. 6 phần tử nhưng mảng numpy 1D của chúng tôi chỉ có 9 phần tử nên nó báo lỗi,
sử dụng numpy. reshape[] để chuyển đổi mảng numpy 1D thành mảng 3D Numpy
Để chuyển đổi mảng 1D Numpy thành mảng 3D Numpy, chúng ta cần chuyển hình dạng của mảng 3D dưới dạng một bộ cùng với mảng cho hàm reshape[] làm đối số
Chúng tôi có một mảng Numpy 1D với 12 mục,
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]
Bây giờ, hãy chuyển đổi mảng 1D này thành mảng 3D có hình khối [2X3X2],
# Convert a 1D Numpy array to a 3D Numpy array of shape 2X3X2 arr3D = np.reshape[arr, [2, 3, 2]] print[arr3D]
Output:
[[[ 1 2] [ 3 4] [ 5 6]] [[ 7 8] [ 9 10] [11 12]]]
Cho đến bây giờ chúng ta đã thấy các ví dụ chuyển đổi mảng 1D thành 2D hoặc 3D. Nhưng sử dụng hàm reshape[] chúng ta có thể chuyển đổi một mảng có hình dạng bất kỳ thành bất kỳ hình dạng nào khác. Như,
sử dụng numpy. reshape[] để chuyển đổi mảng 3D numpy thành mảng 2D Numpy
Giả sử chúng ta có một mảng hình dạng 3D Numpy [2X3X2],
import numpy as np0
Hãy chuyển đổi mảng 3D này thành mảng 2D có hình dạng 2X6 bằng cách sử dụng hàm reshape[],
import numpy as np1
Output:
import numpy as np2
sử dụng numpy. reshape[] để chuyển đổi mảng numpy 2D thành mảng 1D Numpy
Giả sử chúng ta có một mảng hình dạng Numpy 2D [3X3],
import numpy as np3
Hãy chuyển đổi mảng 2D này thành mảng 1D,
import numpy as np4
Đầu ra.
import numpy as np5
Nếu chúng ta chuyển -1 làm đối số hình dạng cho hàm reshape[] thì nó sẽ chuyển mảng có hình dạng bất kỳ thành mảng phẳng.
cục mịch. reshape[] trả về một đối tượng xem mới nếu có thể
Bất cứ khi nào có thể. định hình lại [] trả về chế độ xem của đối tượng đã truyền. Nếu chúng ta sửa đổi bất kỳ dữ liệu nào trong đối tượng xem thì dữ liệu đó sẽ được phản ánh trong đối tượng chính và ngược lại. Hãy hiểu điều này với một ví dụ,
Giả sử chúng ta có một mảng numpy 1D,
import numpy as np6
hãy tạo đối tượng chế độ xem 2D của mảng Numpy 1D bằng cách sử dụng reshape[],
import numpy as np7
.
import numpy as np8
Bây giờ sửa đổi phần tử thứ hai trong mảng 1D numpy ban đầu.
______09
Mặc dù chúng tôi chỉ sửa đổi mảng 1D nhưng thay đổi này cũng sẽ hiển thị trong đối tượng chế độ xem 2D. Hãy xác nhận điều này,
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]0
Đầu ra.
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]1
Điều này chứng tỏ rằng trong ví dụ trên reshape[] đã trả về một đối tượng xem. Nhưng có thể có các tình huống khi reshape[] không thể trả về một đối tượng xem. Nhưng làm cách nào để xác định xem giá trị được trả về có phải là chế độ xem hay không?
Làm cách nào để kiểm tra xem reshape[] có trả về một đối tượng xem không?
Bất kể đối tượng nào reshape[] trả về, chúng ta có thể kiểm tra thuộc tính cơ sở của nó để xác nhận xem nó có dạng xem hay không. Nếu thuộc tính cơ sở là Không thì nó không phải là đối tượng khung nhìn, trong khi nếu không phải là Không thì nó là đối tượng khung nhìn và thuộc tính cơ sở trỏ đến đối tượng mảng ban đầu i. e. ,
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]2
Đầu ra.
______13
cục mịch. định hình lại [] & loại tham số thứ tự khác nhau
Trong hàm reshape[], chúng ta cũng có thể truyền tham số thứ tự và giá trị của nó có thể là 'C' o 'F' hoặc 'A'. Giá trị mặc định là 'C'. Tham số này quyết định thứ tự các phần tử từ mảng đầu vào sẽ được sử dụng
Hãy hiểu điều này với một ví dụ,
Giả sử chúng ta có một mảng 1D,
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]4
Chuyển đổi hàng mảng 1D thành 2D theo thứ tự 'C'
Khi chúng ta chuyển tham số thứ tự là 'C' [giá trị mặc định của tham số thứ tự], thì các mục từ mảng đầu vào sẽ được đọc theo hàng i. e
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]5
Đầu ra.
______3
Các mục từ mảng 1D được đọc theo hàng i. e.
- Đối với hàng đầu tiên của các mục mảng 2D từ chỉ mục 0 đến 2 đã được đọc
- Đối với hàng thứ 2 của các mục mảng 2D từ chỉ mục 3 đến 5 đã được đọc
- Đối với hàng thứ 2 của các mục mảng 2D từ chỉ số 5 đến 8 đã được đọc
Chuyển đổi cột mảng 1D sang 2D theo thứ tự 'F'
Khi chúng ta chuyển tham số thứ tự là 'F', thì các mục từ mảng đầu vào sẽ được đọc theo cột i. e
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]7
Đầu ra.
______18
Các mục từ mảng 1D được đọc theo cột i. e.
- Đối với Cột 1 của các mục mảng 2D từ chỉ số 0 đến 2 đã được đọc
- Đối với Cột thứ 2 của các mục mảng 2D từ chỉ mục 3 đến 5 đã được đọc
- Đối với Cột thứ 2 của các mục mảng 2D từ chỉ mục 5 đến 8 đã được đọc
Chuyển đổi mảng 1D thành 2D theo cách bố trí bộ nhớ với thứ tự tham số “A”
Cả hai tùy chọn 'C' và 'F' đều không xem xét bố cục bộ nhớ của mảng đầu vào. Trong khi đó, khi chúng ta chuyển tham số thứ tự là 'A', thì các mục từ mảng đầu vào sẽ được đọc dựa trên bố cục bộ nhớ trong. Hãy hiểu bằng một ví dụ,
Tạo một mảng numpy 1D
import numpy as np6
Tạo đối tượng chế độ xem 2D từ mảng có nhiều mảng 1D này và sau đó nhận đối tượng chế độ xem chuyển vị của mảng 2D đó,
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]0
Output:
# Create a 1D Numpy array of size 9 from a list arr = np.array[[1, 2, 3, 4, 5, 6, 7, 8, 9]]8
Bây giờ, hãy chuyển đổi đối tượng chế độ xem được chuyển đổi này thành một mảng có nhiều mảng 1D theo thứ tự 'C' i. e. hàng khôn ngoan dựa trên hình dạng hiện tại.
______22
Đầu ra.
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]3
Nó đọc hàng phần tử một cách khôn ngoan từ hình dạng hiện tại của đối tượng xem và bố cục bộ nhớ của mảng ban đầu không được xem xét. Bây giờ, hãy chuyển đổi đối tượng chế độ xem được chuyển đổi này thành một mảng có nhiều mảng 1D bằng cách sử dụng thứ tự 'A' i. e. dựa trên bố cục bộ nhớ của mảng ban đầu,
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]4
Đầu ra.
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]5
Nó đọc hàng phần tử một cách khôn ngoan từ hàng dựa trên bố cục bộ nhớ của mảng 1D ban đầu. Nó không xem xét chế độ xem hiện tại của mảng đầu vào i. e. một đối tượng xem.
Chuyển đổi hình dạng của danh sách bằng cách sử dụng numpy. định hình lại[]
Trong hàm reshape[], chúng ta cũng có thể chuyển một danh sách thay vì mảng. Ví dụ: hãy sử dụng hàm reshape[] để chuyển đổi danh sách thành mảng 2D có nhiều mảng,
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]6
Đầu ra.
______27
Bây giờ, hãy chuyển mảng 2D numpy này thành danh sách của danh sách,
# Convert a 1D Numpy array to a 2D Numpy array arr2D = np.reshape[arr, [3,3]] print['2D Numpy array'] print[arr2D]8
Output:
______29
Ví dụ đầy đủ như sau,
[[1 2 3] [4 5 6] [7 8 9]]0
Đầu ra
[[1 2 3] [4 5 6] [7 8 9]]1
Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python
- Hướng dẫn Pandas Phần #1 - Giới thiệu về Phân tích dữ liệu với Python
- Hướng dẫn Pandas Phần #2 - Khái niệm cơ bản về Pandas Series
- Hướng dẫn Pandas Phần #3 - Nhận & Đặt giá trị chuỗi
- Pandas Tutorial Part #4 - Thuộc tính & phương thức của Pandas Series
- Hướng dẫn về Pandas Phần #5 - Thêm hoặc xóa các thành phần của Pandas Series
- Hướng dẫn về Pandas Phần #6 - Giới thiệu về DataFrame
- Hướng dẫn về Pandas Phần #7 - DataFrame. loc[] - Chọn Hàng/Cột theo Lập chỉ mục
- Hướng dẫn về Pandas Phần #8 - DataFrame. iloc[] - Chọn Hàng/Cột theo Tên nhãn
- Hướng dẫn về gấu trúc Phần #9 - Lọc các hàng trong khung dữ liệu
- Hướng dẫn Pandas Phần #10 - Thêm/Xóa Hàng & Cột DataFrame
- Hướng dẫn về Pandas Phần #11 - Các thuộc tính & phương thức DataFrame
- Hướng dẫn Pandas Phần #12 - Xử lý dữ liệu bị thiếu hoặc giá trị NaN
- Hướng dẫn về Pandas Phần #13 - Lặp lại các Hàng & Cột của DataFrame
- Hướng dẫn Pandas Phần #14 - Sắp xếp DataFrame theo Hàng hoặc Cột
- Hướng dẫn về gấu trúc Phần #15 - Hợp nhất hoặc ghép các khung dữ liệu
- Hướng dẫn về Pandas Phần #16 - DataFrame GroupBy được giải thích bằng các ví dụ
Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?
Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học
Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với PythonHãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay