我有一个 2D 数组,我正在迭代它以使用索引值进行计算,然后将计算值分配给所述索引。
在 NumPy 文档中,提供了一个使用迭代器修改值的示例:
for x in np.nditer(a, op_flags=['readwrite']):
x[...] = 2 * x
但是,使用以下方法跟踪索引时,这似乎不起作用:
it = np.nditer(a, flags=['multi_index'])
while not it.finished:
it[...] = . . .
it.iternext()
但是,我能够使用这些it.multi_index
值,但它似乎不必要地冗长。有没有更简单的方法来实现这一点,或者通过不同的方法或不同的语法?
it = np.nditer(a, flags=['multi_index'])
while not it.finished:
matrix[it.multi_index[0]][it.multi_index[1]] = . . .
it.iternext()
编辑
这是multi_index
尝试使用迭代器索引修改值并失败的迭代示例。
matrix = np.zeros((5,5))
it = np.nditer(matrix, flags=['multi_index'])
while not it.finished:
it[...] = 1
it.iternext()
产生的错误是
TypeError Traceback (most recent call last)
<ipython-input-79-3f4cabcbfde6> in <module>()
25 it = np.nditer(matrix, flags=['multi_index'])
26 while not it.finished:
---> 27 it[...] = 1
28 it.iternext()
TypeError: invalid index type for iterator indexing