首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将形状x的数组整形为形状数组(x,y)

将形状x的数组整形为形状数组(x,y)
EN

Stack Overflow用户
提问于 2020-02-27 07:19:57
回答 2查看 615关注 0票数 1

我正在遵循一个教程来实现数据集上的K-最近邻算法.

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

代码语言:javascript
复制
data = data.reshape((data.shape[0], 3072))

但是,我得到了这个错误:

无法将6003大小的数组整形为形状(6003,3072)

能帮上忙吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)的数组。

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2020-02-27 08:00:59

你正试图重塑成一个不相容的形状。我这么说是什么意思?请看下面的示例:

代码语言:javascript
复制
a = np.array([[1, 2, 3], 
              [4, 5, 6], 
             ])

这个数组的形状是:

代码语言:javascript
复制
a.shape
代码语言:javascript
复制
>> (2, 3)

数组a2 x 3 = 6元素。让我们尝试将其重塑为(2, 6)数组

代码语言:javascript
复制
a.reshape(2, 6)

这就引起了

代码语言:javascript
复制
>> 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元素的数组!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60428074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档