Я не знаю, каковы ваши первоначальные намерения, но ваш код пытается выполнить поэлементное присваивание между массивом в левой части и массивом в правой части.
Массив в LHS — это dataset[i]
, который имеет форму (1134,)
.
Массив на RHS имеет форму (18,63)
из-за (успешного) reshape()
.
При таком поэлементном назначении либо массив LHS, либо массив RHS должны иметь одинаковую форму, либо массив RHS должен транслироваться в форму массива LHS. Так получилось, что по правилам трансляции форма (18,63)
не может транслироваться в форму (1163,)
. Это причина сообщения об ошибке.
В заголовке вашего вопроса говорится: «Я не могу изменить форму массива numpy», но это не то, что пытается сделать ваш код.
Если по какой-то причине вы думали, что можете изменить форму dataset[i]
, а не форму dataset
, и если это было первоначальным намерением вашего кода, это невозможно — вы не можете изменить форму фрагмента массив.
Даже если вы сделаете dataset.reshape(-1, 18, 63)
, это не изменит форму dataset
«на месте». Вместо этого dataset.reshape(-1, 18,63)
вернет новый массив numpy с указанной формой, которая является представлением dataset
(он использует базовые данные dataset
).
Изменение формы сработало; проблема в том, что вы не можете установить строку матрицы в измененный массив numpy (это то, что вы пытаетесь сделать с
dataset[i] = ...
).