it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
np.nditer是numpy array自带的迭代器。用一个demo解释一下np.nditer的用法。
先构建一个2x5的矩阵
import numpy as np
a = np.arange(0,100,10).reshape(2,5)
print(a)
运行结果:
然后输入命令
it = np.nditer(a,flags=['multi_index'],op_flags=['readwrite'])
flags=['multi_index']
表示对a进行多重索引,具体解释看下面的代码。
op_flags=['readwrite']
表示不仅可以对a进行read(读取),还可以write(写入),即相当于在创建这个迭代器的时候,就规定好了有哪些权限。
while not it.finished:print(it.multi_index)it.iternext()
运行结果:
print(it.multi_index)
表示输出元素的索引,可以看到输出的结果都是index。
it.iternext()
表示进入下一次迭代,如果不加这一句的话,输出的结果就一直都是(0, 0)。
整体代码及运行结果:
import numpy as np
a = np.arange(0,100,10).reshape(2,5)
print(a)it = np.nditer(a,flags=['multi_index'],op_flags=['readwrite'])
while not it.finished:print(it.multi_index)it.iternext()