Định hình lại danh sách Python

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 np
0
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 np
1
Output:
import numpy as np
2

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 np
3
Hãy chuyển đổi mảng 2D này thành mảng 1D,
import numpy as np
4
Đầu ra.
import numpy as np
5
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 np
6
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 np
7
.
import numpy as np
8
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 np
6
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 Python

Hã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

Định hình lại trong Python là gì?

Định hình lại có nghĩa là thay đổi hình dạng của một mảng . Hình dạng của một mảng là số phần tử trong mỗi chiều. Bằng cách định hình lại, chúng tôi có thể thêm hoặc xóa kích thước hoặc thay đổi số lượng phần tử trong mỗi kích thước.

Đâu là sự khác biệt giữa reshape[] và resize[] ?

reshape[] và numpy. phương thức resize[] được sử dụng để thay đổi kích thước của mảng NumPy. Sự khác biệt giữa chúng là phương thức reshape[] không thay đổi mảng ban đầu mà chỉ trả về mảng đã thay đổi, trong khi phương thức resize[] không trả về gì cả và thay đổi trực tiếp mảng ban đầu.

Định hình lại NumPy có nghĩa là gì?

numpy. reshape[a, newshape, order='C'][source] Tạo hình mới cho mảng mà không thay đổi dữ liệu của mảng .

Đâu là sự khác biệt giữa shapevà reshape?

Công cụ hình dạng cung cấp một bộ kích thước mảng và có thể được sử dụng để thay đổi kích thước của mảng. Công cụ định hình lại cung cấp hình dạng mới cho mảng mà không thay đổi dữ liệu của mảng . Nó tạo ra một mảng mới và không sửa đổi mảng ban đầu.

Chủ Đề