数组的迭代:
通常我们想要遍历列表的每一项元素时,经常会与for循环来配合使用,数组也是一样的,想要得到每一个维中的具体元素也可以同过for循环来得到,例如:
# 我们想要遍历一个2-D数组的元素
import numpy as np
arr = np.array([[1, 2], [3, 4]])
for x in arr:
for y in x:
print(x)
这样才能得到每一个元素,也就是有几个维,就是for循环几次
这样低纬数组还好,维度越高,需要for循环的次数就越多,代码量就会增加,numpy库专门提供了一个函数来遍历数组,就是nditer()函数,我们可以把代码改成这样:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
x = np.nditer(arr)
print(x)
这样就会返回一个迭代器对象:
<numpy.nditer object at 0x00000235F1736010>
这样再通过一个for循环就可以得到数组中的每一个元素
我们想要再迭代数组对象的同时更改每一个元素类型也是可以的,通过op_dtypes参数来传递需要变成的数据类型就可以了,numpy不会直接更改数组中的元素类型,他需要一个额外空间来完成操作,这个额外空间就是buffer,我们想要在nditer函数中启用buffer需要传参flags=['buffered'],代码如下: