Сначала вы должны проверить внутри матриц и какая матрица дает вам то, что вы хотите.
mask
выход
[[0, 0, 0],
[0, 1, 0],
[0, 0, 0]]
но destination[mask == 1]
дает вам логическую матрицу
mask == 1
выход
[[False, False, False],
[False, True, False],
[False, False, False]]
тогда:
destination[mask]
выход
[[[0, 1, 2],
[0, 1, 2],
[0, 1, 2]]
[[0, 1, 2],
[3, 4, 5],
[0, 1, 2]],
[[0, 1, 2],
[0, 1, 2],
[0, 1, 2]]]
, но использование destination[mask == 1]
дает единственное значение, равное 4. То же самое для source[mask == 1]
, которое дает единственное значение 1.
и если вы используете destination[mask==1] = source[mask==1]
вместо destination[mask] = source[mask]
, вы только измените значение 4 в матрице назначения.
Надеюсь, мое объяснение понятно.
Edit:
Надеюсь, я правильно понял ваш вопрос:
Простая целочисленная структура индексации x[[i]]
дает вам i-ю строку матрицы.
Итак destination[0,1,2]
дает:
[[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]
и для понятного примера ввод destination[1,2,0]
приводит к
[[3, 4, 5],
[6, 7, 8],
[0, 1, 2]]