Пожалуйста, не игнорируйте длинный код, это действительно просто. Basicaly Я пытаюсь сделать Game of Life в Python. Здесь я получаю ошибку.Объект 'numpy.ndarray' не может быть вызван
Когда я вызываю функцию neighbour_count(), я могу правильно получить число соседей, которые имеют каждый элемент.
def neighbours_count(self):
neighbours_count = convolve2d(self.board, np.ones((3, 3)),
mode='same', boundary='wrap') - self.board
self.neighbours_count = neighbours_count
Тогда я хочу, чтобы сделать следующий шаг и действовать на 4 правила, которые она делает, и игра переходит правильно:
def make_step(self):
# We want to check the actual board and not the board that exists after eg. step 2.
self.board_new = np.zeros(shape=(self.size, self.size))
# 1. Any live cell with fewer than two live neighbours dies, as if caused by under-population.
mask = (self.board == 1) & (self.neighbours_count < 2)
self.board_new[mask] = 0
# 2. Any live cell with two or three live neighbours lives on to the next generation.
mask1 = (self.board == 1) & (self.neighbours_count == 2)
self.board_new[mask1] = 1
mask2 = (self.board == 1) & (self.neighbours_count == 3)
self.board_new[mask2] = 1
# 3. Any live cell with more than three live neighbours dies, as if by overcrowding.
mask = (self.board == 1) & (self.neighbours_count > 3)
self.board_new[mask] = 0
# 4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.
mask = (self.board == 0) & (self.neighbours_count == 3)
self.board_new[mask] = 1
self.board = self.board_new
Однако, когда я хочу сделать то же самое еще раз (т.е. сосчитать соседей), то второй раз я называю функцию neighbour_count я получаю:
TypeError: 'numpy.ndarray' object is not callable
Я провел необоснованное количество времени на это, может кто-нибудь помочь, пожалуйста?
Спасибо.
Спасибо, это очень полезно! Я не ожидал ответа так скоро. Я не понимал, что фактически заменяю метод. Еще раз спасибо! –