我无法更改 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 数组,恰好是 view 到 dataset
(它使用基础数据dataset
).
我无法更改 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()
.
(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 数组,恰好是 view 到 dataset
(它使用基础数据dataset
).