我有两个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]]
非常感谢!
答案 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的左上角匹配的点。并不是您所要求的输出,但是如果您确实需要从那里获取其余索引,就很容易了。希望有帮助!