Я встретил ошибку о numpy.
Вот мой код:
huge_may_go = np.array(pd.DataFrame(columns=range(2)))
def add_may_go(x,y):
global huge_may_go
counter = 0
for i in range(-2,3):
print(huge_may_go)
cur_y = y + i
if cur_y < 0 or cur_y >= board_order:
continue
for j in range(-2,3):
cur_x = x+j
if (i == 0 and j == 0) or cur_x < 0 or cur_x >= board_order or ([cur_y,cur_x] == huge_may_go).all(1).any():
continue
if not public_grid[cur_y][cur_x]:
huge_may_go = np.append(huge_may_go,[[cur_y,cur_x]],axis=0)
counter += 1
return counter
Я не знаком с numpy. Раньше я использовал «список» python, чтобы заставить его работать.
Однако скорость списка Python невелика.
Один из моих друзей посоветовал мне попробовать numpy.
Однако я столкнулся с серьезной проблемой
Благодаря @Corralien. Я знаю, что мой код не является неправильным.
Наконец-то я знаю, какой код вызывает мою ошибку:
это строка рядом с ним:
huge_may_go = np.delete(huge_may_go,[[gy,gx]])
однако это приводит к другому вопросу. Почему это неправильно?
перед предложением огромный может идти:
[[7 7]
[7 8]
[7 9]
[7 10]
[7 11]
[8 7]
[8 8]
[8 9]
[8 10]
[8 11]
[9 7]
[9 10]
[9 11]
[10 7]
[10 8]
[10 9]
[10 10]
[10 11]
[11 7]
[11 8]
[11 9]
[11 10]
[11 11]]
однако после этого стало:
[7 7 7 8 7 9 7 10 8 7 8 8 8 9 8 10 8 11 9 7 9 8 9 10 9 11 10 7 10 8 10 9 10 10 10 11 11 7 11 8 11 9 11 10 11 11]
Я хочу знать, почему
в этом коде gx = 8 и gy = 9
Благодаря Corralien в другой раз
однако, когда я запускаю его, [9,8] все еще находится в массиве "huge_may_go"
или способ удаления неправильный?
всем тоже спасибо
Умоляю тебя, помоги мне, пожалуйста.
Кроме того, если у вас есть идея увеличить скорость этого кода. Пожалуйста, скажите мне также.
Скорость - это самое главное, что меня волнует.
Вы также можете сказать мне, как улучшить скорость кода. Спасибо
У меня везде поиск по этому вопросу. Но мой поисковик ничего мне не говорит!
Кроме того, если у вас есть идея увеличить скорость этого кода. Пожалуйста, скажите мне также.
Скорость - это самое главное, что меня волнует.
Да, я уже отредактировал свой вопрос, и вы можете посмотреть на картинку, которую я публикую, чтобы найти более подробную информацию.
Что такое ввод для add_may_go
? Откуда берутся эти цифры?
это add_may_go(8,8)
Какой результат вы хотите?
x и y относятся к числу, в моем вводе x = 8 и y = 8
Истинный результат, который я хочу, - это огромный список, содержащий место, которое он сканирует, и счетчик, сообщающий мне, сколько мест я добавил.
я действительно не понимаю, было бы здорово, если бы вы добавили INPUT
и OUTPUT
к вопросу, это упрощает решение
Я уже отредактировал свой вопрос
Я не понимаю, что вы пытаетесь сделать с этой функцией?
Что эта функция пытается сделать, так это найти точку, в которую должен перейти ai. Я делаю ИИ на основе поиска а-б.
Пока я добавляю шаг, «huge_may_go» добавляет шаги и сообщает, сколько шагов он добавляет. Затем я удаляю их с конца, когда удаляю добавленный шаг.
Всем привет. Большое спасибо, однако это принесло мне еще один вопрос. Если вы хотите помочь мне. пожалуйста, просмотрите вопрос еще раз. Я отредактировал его снова. Всем большое спасибо!
Обновлять
Вам нужно изменить форму массива, потому что numpy.delete
сгладить его:
huge_may_go = np.delete(huge_may_go,[[9,8]]).reshape(-1, 2)
Ваш код, кажется, отлично работает для меня:
huge_may_go = np.array(pd.DataFrame(columns=range(2)))
border_order = 19
public_grid = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] * 24
def add_may_go(x,y):
global huge_may_go
counter = 0
for i in range(-2,3):
print(huge_may_go)
cur_y = y + i
if cur_y < 0 or cur_y >= board_order:
continue
for j in range(-2,3):
cur_x = x+j
if (i == 0 and j == 0) or cur_x < 0 or cur_x >= board_order or ([cur_y,cur_x] == huge_may_go).all(1).any():
continue
if not public_grid[cur_y][cur_x]:
huge_may_go = np.append(huge_may_go,[[cur_y,cur_x]],axis=0)
counter += 1
return counter
add_may_go(8, 8)
Выход:
[]
[[6 6]
[6 7]
[6 8]
[6 9]
[6 10]]
[[6 6]
[6 7]
[6 8]
[6 9]
[6 10]
[7 6]
[7 7]
[7 8]
[7 9]
[7 10]]
[[6 6]
[6 7]
[6 8]
[6 9]
[6 10]
[7 6]
[7 7]
[7 8]
[7 9]
[7 10]
[8 6]
[8 7]
[8 9]
[8 10]]
[[6 6]
[6 7]
[6 8]
[6 9]
[6 10]
[7 6]
[7 7]
[7 8]
[7 9]
[7 10]
[8 6]
[8 7]
[8 9]
[8 10]
[9 6]
[9 7]
[9 8]
[9 9]
[9 10]]
24
??? Меня это шокировало!? Должно быть что-то не так с другой частью моей программы
Привет большое спасибо. Но это вызывает другой вопрос. Я отредактировал свой вопрос. Если хотите, не могли бы вы помочь мне снова?
Большое спасибо. однако кажется, что он не удалил ([8,9]) из "huge_may_go"
или я имею в виду [9,8] также
Он удаляет значения [6, 10], потому что в массиве есть 8-я и 9-я позиции.
Можете ли вы показать, как должен выглядеть вывод?