ສາຍ 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)

运行实例