如何在两个矩阵的同一位置找到某个值的指数?

2024-05-19 16:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在我正在研究的内容中,我有两个numpy矩阵,都是相同大小的,为了简单起见,用0和1填充(但假设它可以用任何数字填充)。我想知道的是一种从这两个矩阵中提取1的位置的方法,1在两个矩阵中的位置相同

例如,如果我有以下两个矩阵和值

a = np.array([[0, 0, 0, 1, 0, 1],
              [1, 1, 0, 1, 1, 1],
              [1, 0, 1, 1, 0, 1],
              [1, 0 ,1, 1, 1, 0],
              [0, 0, 1, 0, 0, 0]])

b = np.array([[0, 0, 0, 0, 0, 1],
              [0, 1, 0, 0, 0, 0],
              [0, 1, 0, 1, 0, 1],
              [0, 0, 0, 0, 0, 1],
              [1, 1, 1, 1, 1, 0]])

value = 1

然后,我想通过某种方式获得两个矩阵中存在值“1”的所有位置的信息,即:

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

我想这个结果可以看作是一个交集,但在我的例子中,位置很重要,这就是为什么我认为np.intersect1d()不会有多大帮助的原因。在我正在使用的实际矩阵中,它们大约是10000乘10000,所以这个列表可能要长得多

提前感谢您的帮助


Tags: 方法numpy信息内容列表valuenp方式
1条回答
网友
1楼 · 发布于 2024-05-19 16:25:02

您可以使用numpy.argwhere

import numpy as np

a = np.array([[0, 0, 0, 1, 0, 1],
              [1, 1, 0, 1, 1, 1],
              [1, 0, 1, 1, 0, 1],
              [1, 0, 1, 1, 1, 0],
              [0, 0, 1, 0, 0, 0]])

b = np.array([[0, 0, 0, 0, 0, 1],
              [0, 1, 0, 0, 0, 0],
              [0, 1, 0, 1, 0, 1],
              [0, 0, 0, 0, 0, 1],
              [1, 1, 1, 1, 1, 0]])

result = np.argwhere(a & b)
print(result)

输出

[[0 5]
 [1 1]
 [2 3]
 [2 5]
 [4 2]]

相关问题 更多 >