在Python中遍历多维数组
我在Python中创建了一个多维数组,像这样:
self.cells = np.empty((r,c),dtype=np.object)
现在我想遍历这个二维数组中的所有元素,顺序我不在乎。请问我该怎么做呢?
7 个回答
19
只需要先遍历一个维度,然后再遍历另一个维度。
for row in self.cells:
for cell in row:
do_something(cell)
当然,如果只有两个维度,你可以用一个叫做列表推导式或者生成器表达式把这个过程简化成一个循环,但这样做可能不太容易理解或者扩展:
for cell in (cell for row in self.cells for cell in row):
do_something(cell)
如果你需要处理多个维度,并且真的想要一个扁平的列表,你可以写一个叫做flatten
的函数。
32
如果你需要改变每个单元格的值,那么在numpy中,ndenumerate就是你的好帮手。即使你不需要改变值,它可能还是很有用的!
for index,value in ndenumerate( self.cells ):
do_something( value )
self.cells[index] = new_value
51
很明显你在使用numpy。用numpy的话,你可以直接这样做:
for cell in self.cells.flat:
do_somethin(cell)