Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何使用一条语句访问数组中条目的值和位置?_Python_Arrays_For Loop_Numpy - Fatal编程技术网

在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循环来遍历存储在二维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 something
        othermatrix[column][row] = 5 
但我想用一种更具Python风格的方式来做,并利用single for语句


在下面Jonathan Eunice的评论之后,我意识到我在问题中使用的第一个for循环所经过的数组根本不是二维的(我将它展平,以便使用简单的循环)。但是,下面来自AChampion的答案就是我想要的,所以我留下这个问题。

您可能正在寻找
np.ndenumerate()
,它的操作类似于标准的python
枚举
,但返回索引,例如元组
(行,列)


您可能正在查找
np.ndenumerate()
,它的操作类似于标准的python
枚举
,但返回索引,例如元组
(行,列)


你声称你的第一个
for
循环在2d
CM
中的所有单元格上迭代,我对此感到困惑。它似乎只在行上迭代,类型为
numpy.ndarray
,因此从不
==1
。实际上,你是对的Jonathan Eunice:我之前把数组展平了(忘了我这么做了),所以我在运行一维,我的错误。然而,我现在可以使用下面的答案来运行我的非平坦阵列,这更方便,仍然是我想要的答案-谢谢!你声称你的第一个
for
循环在2d
CM
中的所有单元格上迭代,我对此感到困惑。它似乎只在行上迭代,类型为
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