我正在遵循一个教程来实现数据集上的K-最近邻算法.
我有一个形状数组(6003 ),我想这样做:
data = data.reshape((data.shape[0], 3072))但是,我得到了这个错误:
无法将6003大小的数组整形为形状(6003,3072)
能帮上忙吗?谢谢!
发布于 2020-02-27 09:00:28
当您重塑一个numpy数组时,总数字元素不应该改变。例如,a =[2,3,4,5,1,7],如果您想要将其重组为一个2D数组,那么乘以的维度应该等于原始数组a中的总数元素。这意味着您可以将数组a重组为(1,6) (2,3),(6,1),(3,2)的维数。
顺便说一句,你问题的题目确实会造成错误。
将形状
(x,)的数组整形为形状(x,y)的数组
这是不可能的,因为您正在尝试向原始数据中添加更多的元素。形状(x,)的数组只能重塑为形状(x/y,y)的数组。
我希望这能帮到你。
发布于 2020-02-27 08:00:59
你正试图重塑成一个不相容的形状。我这么说是什么意思?请看下面的示例:
a = np.array([[1, 2, 3],
[4, 5, 6],
])这个数组的形状是:
a.shape>> (2, 3)数组a有2 x 3 = 6元素。让我们尝试将其重塑为(2, 6)数组
a.reshape(2, 6)这就引起了
>> ValueError: cannot reshape array of size 6 into shape (2,6)注意,我们试图将一个具有2 x 3 = 6元素的数组构建成一个具有2 x 6 = 12元素的数组。但是NumPy不能将这些额外的元素添加到原始数组中,并给出所需的形状。因此,它提高了ValueError。
在您的例子中,您正在尝试将一个带有6003元素的数组变成一个具有6003 x 3072 = 18441216元素的数组!
https://stackoverflow.com/questions/60428074
复制相似问题