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:

Tài liệu tham khảo nhanh về Regex trong Python

Tài liệu tham khảo nhanh về Regex trong Python

Hàm Flags của Regex trong Python

Hàm Flags của Regex trong Python

Hàm split() của Regex trong Python

Hàm split() của Regex trong Python

Hàm finditer() của Regex trong Python

Hàm finditer() của Regex trong Python

Hàm fullmatch() của Regex trong Python

Hàm fullmatch() của Regex trong Python

Hàm match() của Regex trong Python

Hàm match() của Regex trong Python

Hàm sub() của Regex trong Python

Hàm sub() của Regex trong Python

Hàm search() trong Python Regex

Hàm search() trong Python Regex

Hàm findall() của regex trong Python

Hàm findall() của regex trong Python

Lookbehind trong Regex của Python

Lookbehind trong Regex của Python

Lookahead trong Python Regex

Lookahead trong Python Regex

Alternation Regex trong Python

Alternation Regex trong Python

Tìm hiểu Backreferences trong regex của Python

Tìm hiểu Backreferences trong regex của Python

Nhóm Non-capturing trong Regex Python

Nhóm Non-capturing trong Regex Python

Các nhóm Capturing trong regex của Python

Các nhóm Capturing trong regex của Python

Sets và Ranges trong Regex của Python

Sets và Ranges trong Regex của Python

Lượng từ non-greed trong Regex của Python

Lượng từ non-greed trong Regex của Python

Chế độ Greedy trong Regex Python

Chế độ Greedy trong Regex Python

Các lượng từ trong Regex của Python

Các lượng từ trong Regex của Python

Regex Word Boundary trong Python

Regex Word Boundary trong Python

Top