【发布时间】:2018-07-22 02:41:45
【问题描述】:
我有一个二维数组,我正在对其进行迭代,以便使用索引值进行计算,然后将计算出的值分配给所述索引。
在 NumPy 文档中,an example 用于使用迭代器修改值:
for x in np.nditer(a, op_flags=['readwrite']):
x[...] = 2 * x
但是,当使用 the following method 跟踪索引时,这似乎不起作用:
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
【问题讨论】:
-
“这似乎行不通”这种陈述最好跟在minimal reproducible example...
标签: python numpy iteration multi-index numpy-ndarray