#python #numpy
#python #numpy
Вопрос:
У меня есть следующий код:
for (old_point, new_point) in zip(masked_indices, masked_new_indices):
row, col = old_point
new_row, new_col = new_point
new_img[row, col] = img[new_row, new_col]
Где new_img
и img
оба являются ndarrays 1024x1024x3, и masked_indices
и masked_new_indices
оба являются ndarrays 800×2.
Почему это утверждение не имеет такого же поведения?
new_img[masked_indices] = img[masked_new_indices]
И есть ли способ оптимизировать этот for
цикл в более простом стиле?
Ответ №1:
Я все понял. Поскольку new_img
он трехмерный, я должен указать два индекса. Попытка использовать 2D-значение в одном индексе была причиной неожиданного поведения.
Это произвело тот эффект, к которому я стремился, хотя и не очень красиво:
new_img[masked_indices[:, 0], masked_indices[:, 1], :] = img[masked_new_indices[:, 0], masked_new_indices[:, 1], :]