如何使用Python查找2d矩阵中所有元素的所有索引?

如何使用Python查找2d矩阵中所有元素的所有索引?,python,Python,我有一个多维矩阵,我想找到矩阵中所有元素的索引,格式为(I,j)。哦,不幸的是,我不能使用numpy模块。所以,没有“numpy”的代码将是非常受欢迎的 矩阵为: [[0, 1.0, 1.0, 1.0, 5.0, 4.0], [1.0, 0, 1.0, 1.0, 5.0, 4.0], [1.0, 1.0, 0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 0, 1.0, 1.0], [5.0, 5.0, 1.0, 1.0, 0, 0], [4.0, 4.0

我有一个多维矩阵,我想找到矩阵中所有元素的索引,格式为
(I,j)
。哦,不幸的是,我不能使用numpy模块。所以,没有“numpy”的代码将是非常受欢迎的

矩阵为:

[[0, 1.0, 1.0, 1.0, 5.0, 4.0], 
 [1.0, 0, 1.0, 1.0, 5.0, 4.0], 
 [1.0, 1.0, 0, 1.0, 1.0, 1.0], 
 [1.0, 1.0, 1.0, 0, 1.0, 1.0], 
 [5.0, 5.0, 1.0, 1.0, 0, 0], 
 [4.0, 4.0, 1.0, 1.0, 0, 0]]

编辑:如果您指的是所有索引对的列表(对于任何元素),则可以执行以下操作:

[(i,j) for i in range(len(m)) for j in range(len(m[i]))]

[(0, 0),
 (0, 1),
 (0, 2),
 (0, 3),
...
 (5, 4),
 (5, 5)]
对于非零元素的索引,添加一个条件:

[(i,j) for i in range(len(m)) for j in range(len(m[i])) if m[i][j] != 0]

[(0, 0),
 (0, 1),
 (0, 2),
 (0, 3),
...
 (5, 2),
 (5, 3)]
您可以通过双重列表找到每个元素的索引,该索引具有特定值,
val

m = [[0, 1.0, 1.0, 1.0, 5.0, 4.0], 
     [1.0, 0, 1.0, 1.0, 5.0, 4.0], 
     [1.0, 1.0, 0, 1.0, 1.0, 1.0], 
     [1.0, 1.0, 1.0, 0, 1.0, 1.0], 
     [5.0, 5.0, 1.0, 1.0, 0, 0], 
     [4.0, 4.0, 1.0, 1.0, 0, 0]]

val = 1.0
[(i, j) for i, row in enumerate(m) for j, v in enumerate(row) if val==v]

[(0, 1),
 (0, 2),
 (0, 3),
 (1, 0),
 (1, 2),
 (1, 3),
 (2, 0),
 (2, 1),
 (2, 3),
 (2, 4),
 (2, 5),
 (3, 0),
 (3, 1),
 (3, 2),
 (3, 4),
 (3, 5),
 (4, 2),
 (4, 3),
 (5, 2),
 (5, 3)]
如果您使用的是NumPy(在这方面很在行),您可以使用
np.where
,它返回一个行和列坐标的元组,您可以(取消)压缩:


是的,如果你带着一些你也尝试过的代码出现,肯定会有人能帮你吗?索引的[(index,row.index(val)]可能重复,枚举中的行(mymatrix)如果val在row]Delgan…这只给出了第一次出现。我想找到所有发生的事情。有什么帮助吗?@ZdaR我已经在问题中给出了上面的矩阵。我想找到矩阵中元素的所有索引。您能提供帮助吗?所有元素的所有标记或具有特定值的元素的所有索引?这需要用户在每一时刻指定“val”的值。有没有一种方法可以在不指定具体元素值的情况下获得所有元素的所有索引?您是指非零值吗?所有元素的索引都可以从维度上的一对循环生成,非常感谢@xnx它有帮助。:)
list(zip(*np.where(a==1.0)))

[(0, 1),
 (0, 2),
 (0, 3),
 (1, 0),
 (1, 2),
 (1, 3),
 (2, 0),
 (2, 1),
 (2, 3),
 (2, 4),
 (2, 5),
 (3, 0),
 (3, 1),
 (3, 2),
 (3, 4),
 (3, 5),
 (4, 2),
 (4, 3),
 (5, 2),
 (5, 3)]