ສາຍ NumPy Iteration
数组迭代
迭代意味着逐一遍历元素。
当我们在 numpy 中处理多维数组时,可以使用 python 的基本 for 循环来完成此操作。
ຖ້າພວກເຮົາອອກລຳດັບມະນຸດ 1-ລະດັບ, ມັນຈະພາກັນການເຂົ້າວາງມະນຸດສະຫຼາກລະດັບ.
实例
ການອອກລຳດັບຕົວຈຳນວນສະຖານະພາກສາທີ່ມີມະນຸດສະຫຼາກລະດັບ:
import numpy as np arr = np.array([1, 2, 3]) for x in arr: print(x)
ການອອກລຳດັບພາກສາທີ່ມີມະນຸດສອງລະດັບ
ໃນພາກສາທີ່ມີມະນຸດສອງລະດັບ, ມັນຈະພາກັນການເຂົ້າວາງພາກສາທີ່ມີມະນຸດສອງລະດັບ.
实例
ການອອກລຳດັບຕົວຂອງພາກສາທີ່ມີມະນຸດສອງລະດັບ:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: print(x)
ຖ້າພວກເຮົາອອກລຳດັບມະນຸດ n-ລະດັບ, ມັນຈະພາກັນການເຂົ້າວາງມະນຸດສະຖານະທີ່ມີມະນຸດ n-1.
ເພື່ອກັບຄືນຂໍ້ມູນທີ່ແທນບໍ່, ຕົວຈຳນວນ, ພວກເຮົາຕ້ອງການອອກລຳດັບຕົວຂອງມະນຸດໃນແຕ່ລະມະນຸດ.
实例
ການອອກລຳດັບຕົວຈຳນວນສະຖານະພາກສາທີ່ມີມະນຸດສອງລະດັບ:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: for y in x: print(y)
ການອອກລຳດັບພາກສາທີ່ມີມະນຸດສາມລະດັບ
ໃນພາກສາທີ່ມີມະນຸດສາມລະດັບ, ມັນຈະພາກັນການເຂົ້າວາງພາກສາທີ່ມີມະນຸດສາມລະດັບ.
实例
ການອອກລຳດັບຕົວຂອງພາກສາທີ່ມີມະນຸດສາມລະດັບ:
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
ການອອກລຳດັບສາມລະດັບສູງສາມາດຈະຍາກທີ່ຈະຂຽນ.
实例
ການເຂົ້າວາງພາກສາທີ່ມີມະນຸດສາມລະດັບ:
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)