В настоящее время у меня есть код, который проверяет, равен ли данный элемент в массиве = 0, и если да, то установите для значения значение «уровень» (temp_board — это массив 2D numpy, index_to_watch содержит 2D-координаты, которые следует отслеживать для нулей).
indices_to_watch = [(0,1), (1,2)]
for index in indices_to_watch:
if temp_board[index] == 0:
temp_board[index] = level
Я хотел бы преобразовать это в более похожий на numpy подход (удалить for и использовать только функции numpy), чтобы ускорить это. Вот что я пробовал:
masked = np.ma.array(temp_board, mask=(a!=0), hard_mask=True)
masked.put(indices_to_watch, level)
Но, к сожалению, замаскированный массив при выполнении put() хочет иметь одномерные размеры (совершенно странно!), есть ли другой способ обновления элементов массива, которые равны 0 и имеют конкретные индексы?
Или, может быть, использование маскированных массивов — не выход?