在python中,如何使用一条语句访问数组中条目的值和位置?
我使用for循环来遍历存储在二维numpy数组中的所有值。Python让我可以非常简单地完成这项工作,而不必使用以下两个循环遍历列/行:在python中,如何使用一条语句访问数组中条目的值和位置?,python,arrays,for-loop,numpy,Python,Arrays,For Loop,Numpy,我使用for循环来遍历存储在二维numpy数组中的所有值。Python让我可以非常简单地完成这项工作,而不必使用以下两个循环遍历列/行: for cell in CM: if cell == 1: do something 但现在我需要另一个语句,它允许我修改不同二维numpy数组中的一致位置。我可以通过以下方式轻松解决此问题: for row in CM: for column in CM: if CM[column][row] == 1: do someth
for cell in CM:
if cell == 1: do something
但现在我需要另一个语句,它允许我修改不同二维numpy数组中的一致位置。我可以通过以下方式轻松解决此问题:
for row in CM:
for column in CM:
if CM[column][row] == 1: do something
othermatrix[column][row] = 5
但我想用一种更具Python风格的方式来做,并利用single for语句
在下面Jonathan Eunice的评论之后,我意识到我在问题中使用的第一个for循环所经过的数组根本不是二维的(我将它展平,以便使用简单的循环)。但是,下面来自AChampion的答案就是我想要的,所以我留下这个问题。您可能正在寻找
np.ndenumerate()
,它的操作类似于标准的python枚举
,但返回索引,例如元组(行,列)
:
您可能正在查找
np.ndenumerate()
,它的操作类似于标准的python枚举
,但返回索引,例如元组(行,列)
:
你声称你的第一个
for
循环在2dCM
中的所有单元格上迭代,我对此感到困惑。它似乎只在行上迭代,类型为numpy.ndarray
,因此从不==1
。实际上,你是对的Jonathan Eunice:我之前把数组展平了(忘了我这么做了),所以我在运行一维,我的错误。然而,我现在可以使用下面的答案来运行我的非平坦阵列,这更方便,仍然是我想要的答案-谢谢!你声称你的第一个for
循环在2dCM
中的所有单元格上迭代,我对此感到困惑。它似乎只在行上迭代,类型为numpy.ndarray
,因此从不==1
。实际上,你是对的Jonathan Eunice:我之前把数组展平了(忘了我这么做了),所以我在运行一维,我的错误。然而,我现在可以使用下面的答案来运行我的非平坦阵列,这更方便,仍然是我想要的答案-谢谢!最好不要使用链式索引(即使用othermatrix[row,col]
而不是othermatrix[row][col]
),最好不要使用链式索引(即使用othermatrix[row,col]
而不是othermatrix[row][col col
)
for (row, col), cell in np.ndenumerate(CM):
if cell == 1: do something
othermatrix[row][col] = 5