NumPy Array Iteration

數組迭代

迭代意味著逐一遍歷元素。

當我們在 numpy 中處理多維數組時,可以使用 python 的基本 for 循環來完成此操作。

如果我們對 1-D 數組進行迭代,它將逐一遍歷每個元素。

Halimbawa

迭代以下一維數組的元素:

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

I-Run Halimbawa

迭代 2-D 數組

在 2-D 數組中,它將遍歷所有行。

Halimbawa

迭代以下二維數組的元素:

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

I-Run Halimbawa

如果我們迭代一個 n-D 數組,它將逐一遍歷第 n-1 維。

如需返回實際值、標量,我們必須迭代每個維中的數組。

Halimbawa

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

I-Run Halimbawa

迭代 3-D 數組

在 3-D 數組中,它將遍歷所有 2-D 數組。

Halimbawa

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

I-Run Halimbawa

要返回實際值、標量,我們必須迭代每個維中的數組。

Halimbawa

迭代到標量:

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)

I-Run Halimbawa

使用 nditer() 迭代數組

函數 nditer() 是一個輔助函數,從非常基本的迭代到非常高級的迭代都可以使用。它解決了我們在迭代中面臨的一些基本問題,讓我們通過例子進行介紹。

迭代每個標量元素

在基礎的 for 在循環中,迭代遍歷數組的每個標量,我們需要使用 n 個 for 循環,對於具有高維數的數組可能很難編寫。

Halimbawa

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

I-Run Halimbawa

迭代表達式不同數據類型的數組

我們可以使用 op_dtypes 參數,並傳遞期望的數據類型,以在迭代表達式中更改元素數據類型。

Hindi magbabago sa lugar ang NumPy ang uri ng datos ng mga elemento (ang mga elemento ay nasa array), kaya kailangan nito ng ilang ibang espasyo upang gawin ito, ang dagdag na espasyo na ito ay tinatawag na buffer, upang nditer() Kung pinapapatupad ito sa flags=['buffered'].

Halimbawa

I-enumulate ang array bilang string:

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

I-Run Halimbawa

I-iterate sa iba't ibang hakbang

Maaari naming gamitin ang pagsasalungat, pagkatapos ay iiterate.

Halimbawa

Bawasan ng 1 ang elemento sa bawat paglapit sa isang scalar element ng 2D array:

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

I-Run Halimbawa

I-enumulate sa pamamagitan ng ndenumerate() sa pag-iiterate

I-enumulate ay ang pagpapaalam ng isang bilang ng isang bagay sa isang hanay.

Minsan, kapag nag-iiterate kami, kailangan namin ang katugma ng index ng mga elemento, para sa mga kaso na ito, maaaring gamitin ang ndenumerate() Paraan.

Halimbawa

I-enumulate ang mga elemento ng 1D array na ito:

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

I-Run Halimbawa

Halimbawa

I-enumulate ang mga elemento ng 2D array na ito:

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)

I-Run Halimbawa