NumPy:查找(连续)出现的子矩阵

问题描述 投票:0回答:1

我有一个矩阵

Y
和一个维度小于
A
的矩阵
Y
。在
numpy
中找到
A
作为
Y
的连续子矩阵(例如,左上角的索引)出现的位置的快速方法是什么?

例如,如果我有

A = np.array([[1, 0],
              [0, 1]])
Y = np.array([[0, 1, 0],
              [0, 0, 1],
              [1, 0, 0]])

那么我希望结果是

[[0, 1]]

因为

A
作为从第一行和第二列开始的子矩阵出现。

我知道这很容易用循环实现,但我想要运行得更快的东西。

python numpy
1个回答
0
投票

您可以使用推拉窗。虽然这会很慢:

np.array(np.where((np.lib.stride_tricks.sliding_window_view(Y, A.shape) == A).all((2,3)))).T
array([[0, 1]], dtype=int64)
© www.soinside.com 2019 - 2024. All rights reserved.