NumPy array iteration

数组迭代

迭代意味着逐一遍历元素。

当我们在 numpy 中处理多维数组时,可以使用 python 的基本 for 循环来完成此操作。

如果我们对 1-D 数组进行迭代,它将逐一遍历每个元素。

Eksempel

迭代以下一维数组的元素:

import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
  print(x)

Kør Eksempel

迭代 2-D 数组

在 2-D 数组中,它将遍历所有行。

Eksempel

迭代以下二维数组的元素:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
  print(x)

Kør Eksempel

如果我们迭代一个 n-D 数组,它将逐一遍历第 n-1 维。

如需返回实际值、标量,我们必须迭代每个维中的数组。

Eksempel

迭代 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)

Kør Eksempel

迭代 3-D 数组

在 3-D 数组中,它将遍历所有 2-D 数组。

Eksempel

迭代以下 3-D 数组的元素:

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)

Kør Eksempel

要返回实际值、标量,我们必须迭代每个维中的数组。

Eksempel

迭代到标量:

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)

Kør Eksempel

使用 nditer() 迭代数组

函数 nditer() 是一个辅助函数,从非常基本的迭代到非常高级的迭代都可以使用。它解决了我们在迭代中面临的一些基本问题,让我们通过例子进行介绍。

迭代每个标量元素

在基本的 for 循环中,迭代遍历数组的每个标量,我们需要使用 n 个 for 循环,对于具有高维数的数组可能很难编写。

Eksempel

遍历以下 3-D 数组:

import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
  print(x)

Kør Eksempel

迭代不同数据类型的数组

我们可以使用 op_dtypes 参数,并传递期望的数据类型,以在迭代时更改元素的数据类型。

NumPy ændrer ikke elementernes datatyper på stedet (elementerne befinder sig i arrayet), så det kræver lidt mere plads til at udføre denne operation, og denne ekstra plads kaldes buffer, for at i nditer() For at aktivere det, sender vi flags=['buffered']

Eksempel

Gennemgå arrayet som streng:

import numpy as np
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S'])
  print(x)

Kør Eksempel

Iterer med forskellige skridtlængder

Vi kan bruge filtrering og derefter iterere.

Eksempel

Hver gang vi gennemgår en skalarværdi i en 2D array, springer vi 1 element over:

import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
  print(x)

Kør Eksempel

Iterer ved hjælp af ndenumerate()

Enumerering betyder at nævne tingene i en bestemt rækkefølge.

Nogle gange har vi brug for de tilsvarende indekser til elementer, når vi itererer, og for disse tilfælde kan vi bruge ndenumerate() Metode.

Eksempel

Enumerer følgende 1D arrays elementer:

import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
  print(idx, x)

Kør Eksempel

Eksempel

Enumerer følgende 2D arrays elementer:

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)

Kør Eksempel