我有一个矩阵
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
作为从第一行和第二列开始的子矩阵出现。
我知道这很容易用循环实现,但我想要运行得更快的东西。
您可以使用推拉窗。虽然这会很慢:
np.array(np.where((np.lib.stride_tricks.sliding_window_view(Y, A.shape) == A).all((2,3)))).T
array([[0, 1]], dtype=int64)