Python 将形状x的数组重塑为形状(x,y)的数组

Python 将形状x的数组重塑为形状(x,y)的数组,python,numpy,Python,Numpy,我正在学习如何在数据集上实现K-最近邻算法 我有一个形状数组(6003,),我想这样做: data = data.reshape((data.shape[0], 3072)) 但是,我遇到了以下错误: 无法将大小为6003的阵列重塑为形状(60033072) 请问有什么帮助吗?谢谢 您正试图将形状重塑为不兼容的形状。现在,我这是什么意思?看看这个例子: a=np.array([[1,2,3], [4, 5, 6], ]) 此阵列的形状为: a.shape >(2,3) 数组a具有2x3

我正在学习如何在数据集上实现K-最近邻算法

我有一个形状数组(6003,),我想这样做:

data = data.reshape((data.shape[0], 3072))
但是,我遇到了以下错误:

无法将大小为6003的阵列重塑为形状(60033072)


请问有什么帮助吗?谢谢

您正试图将形状重塑为不兼容的形状。现在,我这是什么意思?看看这个例子:

a=np.array([[1,2,3],
[4, 5, 6], 
])
此阵列的形状为:

a.shape
>(2,3)
数组
a
具有
2x3=6个
元素。让我们试着将其重塑为一个
(2,6)
数组

a.重塑(2,6)
这引起

>> ValueError: cannot reshape array of size 6 into shape (2,6)
请注意,我们试图将包含
2x3=6
元素的数组制作成包含
2x6=12
元素的数组。但是NumPy无法将这些额外的元素添加到原始数组中,并给出所需的形状。因此它会引发
ValueError


在您的例子中,您正在尝试将包含
6003
元素的数组制作成包含
6003 x 3072=18441216
元素的数组

您正试图将形状重塑为不兼容的形状。现在,我这是什么意思?看看这个例子:

a=np.array([[1,2,3],
[4, 5, 6], 
])
此阵列的形状为:

a.shape
>(2,3)
数组
a
具有
2x3=6个
元素。让我们试着将其重塑为一个
(2,6)
数组

a.重塑(2,6)
这引起

>> ValueError: cannot reshape array of size 6 into shape (2,6)
请注意,我们试图将包含
2x3=6
元素的数组制作成包含
2x6=12
元素的数组。但是NumPy无法将这些额外的元素添加到原始数组中,并给出所需的形状。因此它会引发
ValueError


在您的例子中,您正在尝试将包含
6003
元素的数组制作成包含
6003 x 3072=18441216
元素的数组

重塑numpy数组时,元素总数不应改变。 e、 g.
a=[2,3,4,5,1,7]
如果您想将其重塑为
2D
数组,则乘以的维数应等于原始数组a中的元素总数。 这意味着您可以将数组的尺寸重新调整为
(1,6)(2,3)、(6,1)、(3,2)

顺便说一句,你问题的标题确实说明了错误

将形状数组
(x,)
重塑为形状数组
(x,y)

这是不可能的,因为您正试图向原始数据中添加更多元素。 形状
(x,)
的数组只能被重塑为形状
(x/y,y)


我希望这会有所帮助。

当您重新塑造numpy数组时,元素总数不应该改变。 e、 g.
a=[2,3,4,5,1,7]
如果您想将其重塑为
2D
数组,则乘以的维数应等于原始数组a中的元素总数。 这意味着您可以将数组的尺寸重新调整为
(1,6)(2,3)、(6,1)、(3,2)

顺便说一句,你问题的标题确实说明了错误

将形状数组
(x,)
重塑为形状数组
(x,y)

这是不可能的,因为您正试图向原始数据中添加更多元素。 形状
(x,)
的数组只能被重塑为形状
(x/y,y)


我希望这能有所帮助。

重塑
只改变形状,而不是元素总数!它不是调整大小。你不能将
(6003,)
改形为
(60033072)
,改形为二维数组并不意味着尺寸会增加,它应该是
6003
的倍数。也许你正在寻找类似
np的东西。重复
?数据必须具有[6003,48,64]这样的形状(假设它是灰度图像)。从这里开始,重塑的目的是降低尺寸以适合KNN这样的算法。你能检查这行之前的数据是否具有正确的形状吗?
重塑
仅更改形状,而不是元素的总数!它不是
调整大小
。你不能重塑
(6003,)
(60033072)
,重塑为2d数组并不意味着尺寸会增加,它应该是
6003的倍数
也许您正在寻找类似
np的东西。重复
?数据必须具有[6003,48,64]这样的形状(如果是灰度图像).从这里开始,重塑的目的是减少尺寸,以适合KNN这样的算法。您能否检查此行之前的数据是否具有正确的形状?