Thực hiện 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)

Chạy mô hình

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)

Chạy mô hình

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)

Chạy mô hình

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)

Chạy mô hình

Để 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)

Chạy mô hình

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)

Chạy mô hình

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)

Chạy mô hình

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)

Chạy mô hình

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)

Chạy mô hình

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)

Chạy mô hình