Как определить точки для гексагональной матрицы в массиве 2D numpy? - PullRequest
0 голосов
/ 25 апреля 2020

Этот вопрос является небольшой копией предыдущего ( Фильтр 2D-массива и координаты возврата из промежуточного ), который, как я думал, работал отлично, но неожиданная ошибка возникла. Я пытаюсь создать гексагональные шаблоны в 2D-массиве, используя следующие ядра:

k1 = np.array([[1, 0, 1],
               [0, 1, 0],
               [0, 1, 0]])
k2 = np.array([[0, 1, 0],
               [0, 1, 0],
               [1, 0, 1]])

Код в предыдущем ответе дал 2D-массив ниже:

 [0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]
 [0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]
 [0.  0.  0.  0.  2.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]
 [0.  0.  0.  0.  1.  0.  2.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]
 [0.  0.  0.  2.  3.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]
 [0.  0.  0.  3.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]
 [0.  0.  0.  0.  2.  0.  2.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0. ]]

1 представляет точки Я добавил. 2 и 3 представляют точки, которые были определены кодом, но точки, помеченные как 3, неверны, потому что я хочу только координаты для других точек в ядре, которые представлены 1.

Я могу видеть, как алгоритм определил эти точки, но я бы хотел, чтобы это работало так, чтобы центральное значение ядра присутствовало до того, как оно определит точки, которые я могу использовать в массиве. Я пытался инвертировать ядра и несколько других подходов, но не смог найти решение. Вся помощь очень ценится

...