Есть ли Python метод для создания пользовательской свертки? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь создать эффективную реализацию тоталистического c сотового автомата с тремя возможными цветами для каждой ячейки, как на этом изображении из книги Стивена Вольфрама, Новый вид науки :

totalistic cellular automaton

Если у меня есть массив numpy, могу ли я создать новый массив numpy, имея окно шириной 3, которое скользит по исходному массиву , добавляет три элемента и использует эту сумму в качестве индекса в справочной таблице для правила?

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

1 Ответ

0 голосов
/ 31 марта 2020
    a = self.array
    i = self.next
    window = [1, 1, 1]
    row = self.array[i - 1]
    correlated_row = np.correlate(row, window, mode="same")
    next_row = np.array([self.table[7 - total - 1] for total in correlated_row])
    a[i] = next_row
    self.next += 1
...