Как уже упоминалось в ответе @ IAmVisco, цепное назначение будет работать.
Однако, чтобы понять причину, по которой ваш код не работает:
Когда вы печатаете что-то вроде x[i, i+1]
, Pythonпонимает значение в квадратных скобках как tuple
, и поэтому фактически пытается выполнить x[(i, i + 1)]
, который обращается к элементу в строке i
и столбце i + 1
.Поскольку такого элемента нет (x
является одномерным массивом), он завершается ошибкой «слишком много индексов для массива».
Если вы действительно хотите получить доступ к двум (или более) элементам таким образом, ваши индексы должны быть в форме np.ndarray
(list
тоже будет работать):
>>> x = np.ones(10)
>>> x[np.array([0, 1])] = 2
>>> x
array([2., 2., 1., 1., 1., 1., 1., 1., 1., 1.])