2014-10-19 3 views
0

У меня есть большой массив 2d bitewise (только 0s и 1s) и маленький (3x3).Соответствующие массивы различной формы в python numpy

Я хочу видеть, где большой массив соответствует маленький один, то есть i, j для которых

big_array[i-1:i+2, j-1:j+2] == small_array 

Там может быть более чем один (i,j), что удовлетворяет условию. Как мне это сделать без написания двойной вложенной петли i, j?

+0

Я приспособил этот ответ на мой случай. stride_tricks очень быстро. http://stackoverflow.com/questions/4936620/using-strides-for-an-efficient-moving-average-filter – fmonegaglia

ответ

2

Я надеюсь, что этот код, что вам нужно:

import numpy as np 

big_array = np.array(...) 
small_array = np.array(...) 

for (i, j), _ in np.ndenumerate(big_array[:-2, :-2]): 
    if (big_array[i:i+3, j:j+3] == small_array).all(): 
     print (i, j) 
Смежные вопросы