在numpy数组中查找子数组的索引

时间:2018-12-31 19:53:08

标签: python arrays numpy find

我有两个numpy数组,一个较大,一个较小:

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

是否有一个函数可以用来查找较大数组的索引,而较小数组的实例中有一个?

理想的结果:

instances[0] = [[2, 0], [2, 1]]
instances[1] = [[1, 1], [1,2]]

非常感谢!

1 个答案:

答案 0 :(得分:1)

据我所知,没有快速的numpy函数可以执行此操作,但是您可以循环浏览并快速检查。

def find_instances(a,b):
    instances = []
    for i in range(a.shape[0] - b.shape[0] + 1):
        for j in range(a.shape[1] - b.shape[1] + 1):
            if np.all(a[i:i+b.shape[0], j:j+b.shape[1]] == b):
                instances.append([i,j])
    return instances

在此,每个实例都是a的左上角与b的左上角匹配的点。并不是您所要求的输出,但是如果您确实需要从那里获取其余索引,就很容易了。希望有帮助!