У меня есть 2 матрицы A(n.m)
и B(p.q)
с p < n
и q < m
. B состоит из значений, похожих на frame(p.q)
внутри A.
Вот что я кодировал:
def find_same(A,B):
C = np.zeros(np.array(A.shape) - np.array(B.shape))
dli = len(A[:,0])-len(B[:,0])
dlj = len(A[0,:])-len(B[0,:])
for i in range(dli):
for j in range(dlj):
tp_diff = A[i:i+len(B[:,0]),j:j+len(B[0,:])]- B
tp_sum = np.sum(tp_diff**2)
C[i,j] = tp_sum
coord = np.unravel_index(C.argmin(), C.shape)
return coord
У меня есть несколько ужасных циклов, которые делают эту функцию вообще неэффективной с большие матрицы. Я видел некоторые похожие проблемы, решаемые с помощью KDTrees или Cdist, но примененные к вектору. Я не нахожу способ приспособить его к моей проблеме.
Ps: Должен быть способ улучшить и мои дистанционные вычисления, но я сомневаюсь, что это главная проблема эффективности.
Спасибо за вашу помощь!