Ах, это сложно.
Когда вы делаете это:
x = y = 42
Вы назначаете значение 42 для x
и y
. Но на практике x
сначала присваивается его значение, а затем y
присваивается то же значение. Итак, это сокращение для:
x = 42
y = 42
Теперь посмотрите на ваш код:
img = img[0:overlap,:,:] = 1
Это сокращение для:
img = 1
img[0:overlap,:,:] = 1
И, конечно, вы ' Согласитесь, что 1[0:overlap,:,:]
не имеет смысла и правильно выбрасывает TypeError: 'int' object does not support item assignment
.
Кстати, img[0:overlap, :, :] = 1
уже изменяет img
, почему вы пытаетесь выполнить задание? Т.е.:
import numpy as np
overlap = 2
img = np.zeros((3, 4, 2), np.uint8)
img[0:overlap, :, :] = 1
print(img)
Результат:
[[[1 1]
[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]
[1 1]]
[[0 0]
[0 0]
[0 0]
[0 0]]]