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 tạo một widget nhập ngày và giờ sử dụng PyQt QDateTimeEdit

Cách tạo một widget nhập ngày và giờ sử dụng PyQt QDateTimeEdit

Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit

Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit

Cách tạo một widget nhập ngày sử dụng lớp PyQt QDateEdit

Cách tạo một widget nhập ngày sử dụng lớp PyQt QDateEdit

Cách sử dụng widget PyQt QSpinBox để tạo một spin box

Cách sử dụng widget PyQt QSpinBox để tạo một spin box

Sử dụng PyQt QComboBox để tạo Widget Combobox

Sử dụng PyQt QComboBox để tạo Widget Combobox

Cách sử dụng lớp PyQt QRadioButton

Cách sử dụng lớp PyQt QRadioButton

Cách sử dụng lớp QCheckBox trong PyQt

Cách sử dụng lớp QCheckBox trong PyQt

Cách sử dụng QFormLayout trong PyQt

Cách sử dụng QFormLayout trong PyQt

Cách sử dụng QGridLayout trong PyQt

Cách sử dụng QGridLayout trong PyQt

Cách sử dụng QVBoxLayout trong PyQt

Cách sử dụng QVBoxLayout trong PyQt

Cách sử dụng widget QLineEdit trong PyQt

Cách sử dụng widget QLineEdit trong PyQt

Cách sử dụng widget QPushButton của PyQt

Cách sử dụng widget QPushButton của PyQt

Cách sử dụng widget PyQt QLabel

Cách sử dụng widget PyQt QLabel

Tín hiệu và Khe (Signals & Slots) trong PyQt

Tín hiệu và Khe (Signals & Slots) trong PyQt

PyQt là gì? Tạo một chương trình

PyQt là gì? Tạo một chương trình "Hello World".

Ứng dụng System Tray với Tkinter

Ứng dụng System Tray với Tkinter

Cách hiển thị đồ thị từ thư viện Matplotlib trong Tkinter

Cách hiển thị đồ thị từ thư viện Matplotlib trong Tkinter

Cách sử dụng Validate trong Tkinter

Cách sử dụng Validate trong Tkinter

Cấu trúc MVC trong Tkinter

Cấu trúc MVC trong Tkinter

Cách sử dụng widget PhotoImage của Tkinter

Cách sử dụng widget PhotoImage của Tkinter

Top