在numpy 1.6中引入的迭代器对象nditer提供了许多灵活的方式来以系统的方式访问一个或多个数组的所有元素。
1 单数组迭代
该部分位于numpy-ref-1.14.5第1.15 部分Single Array Iteration。
利用nditer对象可以实现完成访问数组中的每一个元素这项最基本的功能,使用标准的python迭代器接口可以逐个访问每一个元素。
1.1 默认迭代顺序
a = np.arange(6).reshape(2,3) b = a.T print(a) # [[0 1 2] # [3 4 5]] for i in np.nditer(a): print(i) # 1 2 3 4 5 6(节约版面,竖着 -> 横着) print(b) # [[0 3] # [1 4] # [2 5]] for j in np.nditer(b): print(j) # 1 2 3 4 5 6(节约版面,竖着 -> 横着)
注意:通过该种方式迭代输出的是以元素在存储器中的布局顺序输出的,无论其视图做何种改变(转置,变换shape),其输出结果是一致的,该中方式可以提高迭代效率