NUMPY
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Cách sử dụng hàm copy() trong NumPy với Python

Trong NumPy, khi bạn cắt (slice) một mảng, kết quả nhận được thường là một "view" của mảng gốc. Điều này có nghĩa là bất kỳ thay đổi nào trên mảng con cũng sẽ ảnh hưởng trực tiếp đến mảng ban đầu. Tuy nhiên, trong nhiều tình huống, bạn có thể muốn làm việc với một bản sao hoàn toàn độc lập của mảng đó. Trong bài viết này, bạn sẽ học cách sử dụng phương thức copy() của NumPy để tạo ra một bản sao của mảng thay vì một "view", giúp bạn tránh được những thay đổi không mong muốn và đảm bảo dữ liệu gốc không bị ảnh hưởng.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giới thiệu về phương thức NumPy copy() trong Python

Khi bạn cắt (slice) một mảng, bạn sẽ nhận được một mảng con. Mảng con này là một "view" của mảng gốc. Nói cách khác, nếu bạn thay đổi các phần tử trong mảng con, thay đổi này sẽ được phản ánh trong mảng gốc. Ví dụ:

import numpy as np

a = np.array([
    [1, 2, 3],
    [4, 5, 6]
])

b = a[0:, 0:2]
print(b)

b[0, 0] = 0
print(b)
print(a)

Cách hoạt động

Screenshot 202024 06 04 20155811 png

Đầu tiên, tạo một mảng 2D:

a = np.array([
    [1, 2, 3],
    [4, 5, 6]
])

Thứ hai, cắt mảng a và gán mảng con vào biến b:

Bài viết này được đăng tại [free tuts .net]

b = a[0:, 0:2]

Biến b sẽ là:

[[1 2]
 [4 5]]

Thay đổi phần tử tại chỉ mục [0,0] trong mảng con b thành số không và hiển thị biến b:

b[0, 0] = 0
print(b)

Kết quả sẽ là:

[[0 2]
 [4 5]]

b là một "view" của mảng a, thay đổi này cũng sẽ được phản ánh trong mảng a:

print(a)

Kết quả sẽ là:

[[0 2 3]
 [4 5 6]]

Lý do NumPy tạo ra một "view" thay vì một mảng mới là để không phải sao chép dữ liệu, từ đó cải thiện hiệu suất.

Tuy nhiên, nếu bạn muốn có một bản sao của mảng thay vì một "view", bạn có thể sử dụng phương thức copy(). Ví dụ:

import numpy as np

a = np.array([
    [1, 2, 3],
    [4, 5, 6]
])

# tạo bản sao
b = a[0:, 0:2].copy()
print(b)

b[0, 0] = 0
print(b)

print(a)

Trong ví dụ này:

Đầu tiên, gọi phương thức copy() của mảng a để tạo ra một bản sao của mảng con và gán nó vào biến b.

Thay đổi phần tử tại chỉ mục [0,0] của mảng b. Vì cả hai mảng là độc lập, thay đổi này không ảnh hưởng đến mảng a.

Kết bài

Khi bạn cắt một mảng trong NumPy, bạn sẽ nhận được một "view" của mảng đó, nghĩa là mọi thay đổi trên mảng con sẽ ảnh hưởng trực tiếp đến mảng gốc. Để tránh tình trạng này và đảm bảo rằng dữ liệu gốc không bị thay đổi, bạn nên sử dụng phương thức copy() để tạo ra một bản sao hoàn toàn độc lập của mảng. Việc này không chỉ giúp bảo vệ dữ liệu gốc mà còn mang lại sự linh hoạt trong quá trình xử lý và thao tác dữ liệu trong các dự án lập trình của bạn.

Cùng chuyên mục:

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Cách nạp dữ liệu Machine Learning từ File trong Python

Cách nạp dữ liệu Machine Learning từ File trong Python

Hướng dẫn sử dụng Google Sheets API với Python

Hướng dẫn sử dụng Google Sheets API với Python

Xây dựng  web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn viết Snake Game bằng Python

Hướng dẫn viết Snake Game bằng Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng Python Debugger với hàm breakpoint()

Cách sử dụng Python Debugger với hàm breakpoint()

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hỗ trợ Async trong Django 3.1

Hỗ trợ Async trong Django 3.1

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

Ý nghĩa của if __name__ ==

Ý nghĩa của if __name__ == "__main__" trong Python

Cách xóa phần tử trong danh sách Python

Cách xóa phần tử trong danh sách Python

Top