Найти индексы подмассива в массиве numpy - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть два пустых массива, один больше, другой меньше:

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]]

Большое спасибо!

1 Ответ

0 голосов
/ 01 января 2019

Насколько я знаю, не существует быстрой функции 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

Здесь каждый экземпляр - это точка в верхнем левом углуА, который соответствует верхнему левому углу б.Не совсем то, что вы запрашивали, но достаточно просто получить остальные индексы, если они вам действительно нужны.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...