Thực hiện mảng NumPy
- Trang trước Chuyển đổi hình dáng mảng NumPy
- Trang tiếp theo Kết nối mảng NumPy
Lặp qua mảng
Lặp qua có nghĩa là lặp qua từng phần tử một cách riêng biệt.
Khi chúng ta xử lý mảng đa chiều trong numpy, chúng ta có thể sử dụng vòng lặp cơ bản của python để hoàn thành thao tác này.
Nếu chúng ta lặp qua mảng 1-D, nó sẽ lặp qua từng phần tử một cách riêng biệt.
Mô hình
Lặp qua các phần tử của mảng 1-D sau:
import numpy as np arr = np.array([1, 2, 3]) for x in arr: print(x)
Lặp qua mảng 2-D
Trong mảng 2-D, nó sẽ lặp qua tất cả các hàng.
Mô hình
Lặp qua các phần tử của mảng 2-D sau:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: print(x)
Nếu chúng ta lặp qua một mảng n-D, nó sẽ lặp qua từng chiều n-1 một cách riêng biệt.
Để trả về giá trị thực tế, scalar, chúng ta phải lặp qua từng mảng trong mỗi chiều.
Mô hình
Lặp qua từng phần tử scalar của mảng 2-D:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: for y in x: print(y)
Lặp qua mảng 3-D
Trong mảng 3-D, nó sẽ lặp qua tất cả các mảng 2-D.
Mô hình
Lặp qua các phần tử của mảng 3-D sau:
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) for x in arr: print(x)
Để trả về giá trị thực tế, scalar, chúng ta phải lặp qua từng mảng trong mỗi chiều.
Mô hình
Lặp đến scalar:
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) for x in arr: for y in x: for z in y: print(z)
sử dụng nditer() để lặp qua mảng
hàm nditer()
là một hàm辅助, có thể sử dụng từ lặp rất cơ bản đến rất phức tạp. Nó giải quyết một số vấn đề cơ bản mà chúng ta gặp trong quá trình lặp, để giới thiệu qua ví dụ.
lặp qua từng phần tử scalar của phần tử
Trong cơ bản for
Trong vòng lặp, để lặp qua từng phần tử scalar của mảng, chúng ta cần sử dụng n. for
Vòng lặp có thể rất khó viết đối với mảng có số chiều cao.
Mô hình
Lặp qua mảng 3-D sau:
import numpy as np arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) for x in np.nditer(arr): print(x)
lặp qua mảng với các loại dữ liệu khác nhau
Chúng ta có thể sử dụng op_dtypes
Chỉ định tham số, và truyền vào loại dữ liệu mong muốn, để thay đổi loại dữ liệu của phần tử trong quá trình lặp lại.
NumPy sẽ không thay đổi loại dữ liệu của phần tử theo địa chỉ (phần tử nằm trong mảng), vì vậy nó cần một không gian khác để thực hiện hoạt động này, không gian bổ sung này được gọi là buffer, để trong nditer()
Nếu chúng ta kích hoạt nó, chúng ta truyền tham số flags=['buffered']
。
Mô hình
Duyệt qua mảng dưới dạng chuỗi:
import numpy as np arr = np.array([1, 2, 3]) for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']) print(x)
Duyệt qua với bước dài khác nhau
Chúng ta có thể sử dụng lọc, sau đó tiến hành duyệt qua.
Mô hình
Mỗi lần duyệt qua một phần tử scalar của mảng 2D, bỏ qua 1 phần tử:
import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) for x in np.nditer(arr[:, ::2]): print(x)
Thực hiện duyệt liệt kê bằng ndenumerate()
Liệt kê là việc đề cập đến số thứ tự của các vật thể.
Đôi khi, khi duyệt qua, chúng ta cần các chỉ mục tương ứng của phần tử, cho các trường hợp này, chúng ta có thể sử dụng ndenumerate()
Phương pháp.
Mô hình
Liệt kê các phần tử của mảng 1D sau:
import numpy as np arr = np.array([1, 2, 3]) for idx, x in np.ndenumerate(arr): print(idx, x)
Mô hình
Liệt kê các phần tử của mảng 2D sau:
import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) for idx, x in np.ndenumerate(arr): print(idx, x)
- Trang trước Chuyển đổi hình dáng mảng NumPy
- Trang tiếp theo Kết nối mảng NumPy