Я пытаюсь перебрать массив 2d numpy и проверить, где в массиве встречаются значения 1,2 и 3, но я получаю ошибку значения, потому что numpy заявляет, что это неоднозначно. Каков наилучший способ решить эту проблему?
for x in range(row):
for y in range(row):
if grid[x,y] == 1:
pygame.draw.rect(window, (0,255,0), (x * distance, y * distance, distance, distance))
elif grid[x,y] == 2:
pygame.draw.rect(window, (0,255,0), (x * distance, y * distance, distance, distance))
elif grid[x,y] == 3:
pygame.draw.rect(window, (255,0,0), (x * distance, y * distance, distance, distance))
if grid[x,y] == 1:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
`def generateGrid(self): grid = np.zeros((20,20)) try: for c,i in enumerate(self.snake.body): if c == 0: #2 - это head grid[ix ,iy ] = 2 else: #1 — сетка тела[ix, iy] = 1 за исключением: pass #is food grid[self.food.x, self.food.y] = 3 return grid
Пожалуйста print(grid)
и вставьте вывод.
[[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. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 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. 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. 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.]]
Замените grid[i.x, i.y]
на grid[i.x][ i.y]
в функции generateGrid
.
То же самое было обновлено в ответ. Примите это, если это решило вашу проблему.
Попробуйте использовать grid[x][y]
вместо сетки[x,y]
Что там в сетке[1][1] ? Это одно значение или массив?
mh выдает ошибку индекса! print(grid[1,1]) IndexError: индекс 1 выходит за пределы оси 0 с размером 1
Согласно вашей функции generateGrid
, показанной в комментариях,
Замените grid[i.x, i.y]
на grid[i.x][ i.y]
в функции generateGrid
.
Это решило вашу проблему.
Можете ли вы показать свой 2d массив?