Tiêu chí để đáp ứng cho việc cung cấp hình dạng mới là 'Hình dạng mới phải tương thích với hình dạng ban đầu'
numpy cho phép chúng ta đưa ra một trong các tham số hình dạng mới là -1 (ví dụ: (2, -1) hoặc (-1,3) nhưng không (-1, -1)). Nó đơn giản có nghĩa là nó là một chiều không xác định và chúng tôi muốn numpy để tìm ra nó. Và numpy sẽ chỉ ra điều này bằng cách xem xét 'độ dài của mảng và các kích thước còn lại' và đảm bảo rằng nó thỏa mãn các tiêu chí đã đề cập ở trên
Bây giờ xem ví dụ.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Bây giờ cố gắng định hình lại với (-1). Kết quả hình dạng mới là (12,) và tương thích với hình dạng ban đầu (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Bây giờ cố gắng định hình lại với (-1, 1). Chúng tôi đã cung cấp cột là 1 nhưng hàng không xác định. Vì vậy, chúng tôi nhận được kết quả hình dạng mới là (12, 1) .chỉ tương thích với hình dạng ban đầu (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
Ở trên phù hợp với thông báo numpy
lời khuyên / lỗi, để sử dụng reshape(-1,1)
cho một tính năng duy nhất; tức là cột đơn
Định hình lại dữ liệu của bạn bằng cách sử dụng array.reshape(-1, 1)
nếu dữ liệu của bạn có một tính năng duy nhất
Hình dạng mới như (-1, 2). hàng không xác định, cột 2. chúng tôi nhận được kết quả hình dạng mới là (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Bây giờ cố gắng giữ cột như không biết. Hình dạng mới như (1, -1). tức là hàng là 1, cột không xác định. chúng ta có kết quả hình dạng mới là (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
Ở trên phù hợp với thông báo numpy
lời khuyên / lỗi, để sử dụng reshape(1,-1)
cho một mẫu duy nhất; tức là hàng đơn
Định hình lại dữ liệu của bạn bằng cách sử dụng array.reshape(1, -1)
nếu nó chứa một mẫu
Hình dạng mới (2, -1). Hàng 2, cột không rõ. chúng ta có kết quả hình dạng mới là (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Hình dạng mới như (3, -1). Hàng 3, cột không rõ. chúng ta có kết quả hình dạng mới là (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Và cuối cùng, nếu chúng ta cố gắng cung cấp cả hai chiều là không xác định, tức là hình dạng mới là (-1, -1). Nó sẽ ném một lỗi
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
để duy trì cùng số lượng phần tử.