Lặp lại mảng NumPy


Lặp lại Mảng

Lặp lại có nghĩa là đi qua từng phần tử một.

Khi chúng ta xử lý mảng nhiều chiều trong numpy, chúng ta có thể thực hiện việc này bằng cách sử dụng forvòng lặp cơ bản của python.

Nếu chúng ta lặp lại trên mảng 1-D, nó sẽ đi qua từng phần tử một.

Thí dụ

Lặp lại 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 lại Mảng 2-D

Trong mảng 2-D, nó sẽ đi qua tất cả các hàng.

Thí dụ

Lặp lại 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 lại trên một mảng n -D, nó sẽ lần lượt trải qua chiều thứ n-1.

Để trả về giá trị thực, giá trị vô hướng, chúng ta phải lặp lại các mảng trong mỗi chiều.

Thí dụ

Lặp lại trên từng phần tử vô hướng 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 lại Mảng 3-D

Trong mảng 3-D, nó sẽ đi qua tất cả các mảng 2-D.

Thí dụ

Lặp lại 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, giá trị vô hướng, chúng ta phải lặp lại các mảng trong mỗi chiều.

Thí dụ

Lặp lại các phần vô hướng:

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)

Lặp lại các mảng bằng cách sử dụng nditer ()

Hàm nditer()là một hàm trợ giúp có thể được sử dụng từ các bước lặp rất cơ bản đến rất nâng cao. Nó giải quyết một số vấn đề cơ bản mà chúng ta phải đối mặt trong quá trình lặp lại, hãy đi qua nó với các ví dụ.

Lặp lại từng phần tử vô hướng

Trong các forvòng lặp cơ bản, việc lặp qua từng vô hướng của một mảng, chúng ta cần sử dụng n for vòng lặp, điều này có thể khó viết đối với các mảng có số chiều rất cao.

Thí dụ

Lặp lại 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 lại mảng với các kiểu dữ liệu khác nhau

Chúng ta có thể sử dụng op_dtypesđối số và chuyển cho nó kiểu dữ liệu mong đợi để thay đổi kiểu dữ liệu của các phần tử trong khi lặp.

NumPy không thay đổi kiểu dữ liệu của phần tử tại chỗ (nơi phần tử nằm trong mảng) vì vậy nó cần một số không gian khác để thực hiện hành động này, không gian bổ sung đó được gọi là bộ đệm và để kích hoạt nó trong nditer()chúng tôi truyền flags=['buffered'].

Thí dụ

Lặp lại qua mảng dưới dạng một 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)

Lặp lại với kích thước bước khác nhau

Chúng ta có thể sử dụng bộ lọc và theo sau là lặp lại.

Thí dụ

Lặp lại mọi phần tử vô hướng 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)

Lặp lại được liệt kê bằng cách sử dụng ndenumerate ()

Liệt kê có nghĩa là đề cập đến số thứ tự của từng thứ một.

Đôi khi chúng tôi yêu cầu chỉ mục tương ứng của phần tử trong khi lặp, ndenumerate()phương thức có thể được sử dụng cho các cơ sở dữ liệu đó.

Thí dụ

Liệt kê các phần tử sau mảng 1D:

import numpy as np

arr = np.array([1, 2, 3])

for idx, x in np.ndenumerate(arr):
  print(idx, x)

Thí dụ

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)