我无法更改 numpy 数组的形状

I can't change the shape of the numpy array

我无法更改 numpy 数组的形状

dataset[i].shape   # (1134, )
dataset[i] = dataset[i].reshape((18, 63))

ValueError: could not broadcast input array from shape (18,63) into shape (1134)

我不知道你的初衷是什么,但你的代码试图在 LHS 上的数组和 RHS 上的数组之间进行 element-by-element 赋值。

LHS 上的数组是 dataset[i],其形状为 (1134,)

由于(成功)reshape().

,RHS 上的数组形状为 (18,63)

在这种elemen-by-element赋值中,LHS数组和RHS数组需要具有相同的形状,或者RHS数组应该可以广播为LHS数组的形状。恰好,通过rules of broadcasting,形状(18,63)无法广播成形状(1163,)。这就是错误消息背后的原因。

你的问题标题说“我不能改变 numpy 数组的形状”,但这不是你的代码试图做的。

如果出于某种原因,您认为可以更改 dataset[i] 的形状,而不是更改 dataset 的形状,并且如果那是您的代码背后的初衷,那就是不可能 -- 您不能更改数组切片的形状。

即使您 dataset.reshape(-1, 18, 63),也不会改变 dataset "in-place" 的形状。相反,dataset.reshape(-1, 18,63) 将 return 一个具有指定形状的新 numpy 数组,恰好是 viewdataset(它使用基础数据dataset).