Iteracja tablic w NumPy

数组迭代

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

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

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

Przykład

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

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

Uruchom przykład

迭代 2-D 数组

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

Przykład

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

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

Uruchom przykład

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

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

Przykład

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

Uruchom przykład

迭代 3-D 数组

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

Przykład

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

Uruchom przykład

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

Przykład

迭代到标量:

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)

Uruchom przykład

使用 nditer() 迭代数组

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

迭代每个标量元素

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

Przykład

遍历以下 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)

Uruchom przykład

迭代不同数据类型的数组

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

NumPy nie zmienia typów danych elementów w miejscu (elementy znajdują się w tablicy), więc potrzebuje więcej przestrzeni do wykonania tej operacji, dodatkowa przestrzeń nazywana buforem, nditer() Aby go włączyć w flags=['buffered'].

Przykład

Przeglądaj tablicę w formie ciągów znaków:

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

Uruchom przykład

Iteracja z różnymi krokami

Możemy użyć filtrów, a następnie iterować.

Przykład

Pomijanie 1 elementu przy każdym przechodzeniu przez skalarny element 2D tablicy:

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

Uruchom przykład

Iteracja numerowania za pomocą ndenumerate()

Numerowanie to podkreślenie kolejności rzeczy.

Czasami potrzebujemy odpowiednich indeksów elementów podczas iteracji, dla tych przypadków możemy użyć ndenumerate() Metoda.

Przykład

Numeruj elementy poniższej 1D tablicy:

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

Uruchom przykład

Przykład

Numeruj elementy poniższej 2D tablicy:

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)

Uruchom przykład