NumPy 數組迭代
- 上一頁 NumPy 數組重塑
- 下一頁 NumPy 數組連接
數組迭代
迭代意味著逐一遍歷元素。
當我們在 numpy 中處理多維數組時,可以使用 python 的基本 for 循環來完成此操作。
如果我們對 1-D 數組進行迭代,它將逐一遍歷每個元素。
實例
迭代以下一維數組的元素:
import numpy as np arr = np.array([1, 2, 3]) for x in arr: print(x)
迭代 2-D 數組
在 2-D 數組中,它將遍歷所有行。
實例
迭代以下二維數組的元素:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: print(x)
如果我們迭代一個 n-D 數組,它將逐一遍歷第 n-1 維。
如需返回實際值、標量,我們必須迭代每個維中的數組。
實例
迭代 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)
迭代 3-D 數組
在 3-D 數組中,它將遍歷所有 2-D 數組。
實例
迭代以下 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)
要返回實際值、標量,我們必須迭代每個維中的數組。
實例
迭代到標量:
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)
使用 nditer() 迭代數組
函數 nditer()
是一個輔助函數,從非常基本的迭代到非常高級的迭代都可以使用。它解決了我們在迭代中面臨的一些基本問題,讓我們通過例子進行介紹。
迭代每個標量元素
在基本的 for
循環中,迭代遍歷數組的每個標量,我們需要使用 n 個 for
循環,對于具有高維數的數組可能很難編寫。
實例
遍歷以下 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)
迭代不同數據類型的數組
我們可以使用 op_dtypes
參數,并傳遞期望的數據類型,以在迭代時更改元素的數據類型。
NumPy 不會就地更改元素的數據類型(元素位于數組中),因此它需要一些其他空間來執行此操作,該額外空間稱為 buffer,為了在 nditer()
中啟用它,我們傳參 flags=['buffered']
。
實例
以字符串形式遍歷數組:
import numpy as np arr = np.array([1, 2, 3]) for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']): print(x)
以不同的步長迭代
我們可以使用過濾,然后進行迭代。
實例
每遍歷 2D 數組的一個標量元素,跳過 1 個元素:
import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) for x in np.nditer(arr[:, ::2]): print(x)
使用 ndenumerate() 進行枚舉迭代
枚舉是指逐一提及事物的序號。
有時,我們在迭代時需要元素的相應索引,對于這些用例,可以使用 ndenumerate()
方法。
實例
枚舉以下 1D 數組元素:
import numpy as np arr = np.array([1, 2, 3]) for idx, x in np.ndenumerate(arr): print(idx, x)
實例
枚舉以下 2D 數組元素:
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)
- 上一頁 NumPy 數組重塑
- 下一頁 NumPy 數組連接