Cách xử lý kích thước trong NumPy
Tìm hiểu cách xử lý các chiều của ma trận Numpy bằng cách sử dụng np.reshape, np.newaxis và np.expand_dims, được minh họa bằng mã Python.
By Vidhi Chung, Nhà khoa học dữ liệu
np.newaxis
- Nó được sử dụng để tăng kích thước của mảng hiện có. Nó sử dụng toán tử cắt để tạo lại mảng.
- Thứ nguyên được thêm tạm thời vào vị trí của np.newaxis trong mảng. 'Không' cũng có thể được sử dụng thay cho np.newaxis.
np.reshape:
- Nó được sử dụng để định hình lại mảng theo bố cục mong muốn.
np.expand_dims:
- Nó mở rộng hình dạng của một mảng bằng cách chèn một trục mới vào vị trí trục trong hình dạng mảng được mở rộng
Chúng ta hãy xem một số ứng dụng chính trong đó các hoạt động xử lý kích thước NumPy ở trên có ích:
Ứng dụng 1: Xếp hạng 1 mảng chuyển đổi sang vectơ hàng/cột
Ở đây, chúng ta đã tạo một mảng gồm 4 phần tử có hình dạng (4,) được gọi là mảng Mảng hạng 1.
Array of 4 elements: [0 1 2 3]
Notice the shape, this is rank 1 array: (4,)
after transpose: (4,)
Tuy nhiên, mảng Hạng 1 thường dẫn đến kết quả không rõ ràng vì chúng không hoạt động như vectơ hàng/cột một cách nhất quán. Như đã trình bày ở trên, nếu chúng ta đổi vị của x1, hình dạng của nó vẫn giữ nguyên.
Do đó, bạn nên chỉ định rõ ràng kích thước của một mảng. Điều này có thể đạt được bằng cả 3 kỹ thuật được giải thích ở trên:
- sử dụng np.newaxis:
row vector: [[0 1 2 3]]
(1, 4) column vector: [[0] [1] [2] [3]]
(4, 1)
- sử dụng np.reshape
Row vector using reshape: [[0 1 2 3]]
column vector using reshape: [[0] [1] [2] [3]]
- sử dụng np.expand_dims
Row vector using expand_dims: [[0 1 2 3]]
column vector using expand_dims: [[0] [1] [2] [3]]
Ứng dụng 2: Tăng kích thước
Hãy tạo một mảng x2 khác có hình dạng (2,4,28) và kiểm tra xem chúng ta có thể mở rộng kích thước của x2 từ 3D lên 5D như thế nào
Điều quan trọng cần lưu ý ở trên là np.reshape cũng cho phép bạn phân chia kích thước.
Ứng dụng 3: Phát sóng
Theo Tài liệu NumPy:
phát sóng mô tả cách xử lý các mảng có hình dạng khác nhau trong các phép tính số học.
Ví dụ: khi chúng tôi thêm 2 mảng sau, nó hiển thị 'ValueError' do hình dạng không khớp:
Hãy xem cách np.newaxis tăng kích thước của một trong các mảng bên dưới:
Vì chúng ta chủ yếu cần điều chỉnh kích thước của mảng để hoạt động phát sóng thích hợp, nên các cách tăng kích thước np.reshape và np.expand_dims đều hoạt động tốt như nhau (như trong ví dụ trước).
Cảm ơn vì đã đọc !!!
Sổ ghi chép Jupyter có mã đầy đủ được đặt tại đây.
Tài liệu tham khảo:
- https://stackoverflow.com/questions/46334014/np-reshapex-1-1-vs-x-np-newaxis?noredirect=1&lq=1
- https://stackoverflow.com/questions/28385666/numpy-use-reshape-or-newaxis-to-add-dimensions
Tiểu sử: Vidhi Chung tò mò về sức mạnh của dữ liệu và thường được gọi là Nhà khoa học dữ liệu.
Nguyên. Đăng lại với sự cho phép.
Liên quan:
Câu chuyện hàng đầu trong 30 ngày qua
Nguồn: https://www.kdnuggets.com/2020/07/numpy-handle-dimensions.html