python reshape()函数ValueError: total size of new array must be unchanged

来源:互联网 发布:原生js ajax实例 编辑:程序博客网 时间:2024/05/18 01:21

之前遇到这样的小问题,记得我之前是将图像转换为数组的形式存储,之后处理需要转换为二维的数组,大概就是这样。这里就不还原了,我用个简单的小例子阐述下.就是使用a.reshape()来改变数组的形状,创建一个1维数组,将其转换为2维数组,出现了个错误:

既然遇到了这个问题,就来学习一下这个函数。首先看看报错信息: total size of new array must be unchanged新的数组大小必须不能够被改变,就是数组的元素个数不能变,之前的8个元素,在你的维度改变之后,元素个数还应该是原来的数目。

a.reshape(x,y).这里我们可以把其中的x,y看做是两个轴,大家可以就按我标记的记,x代表横向(也就是行),y代表纵向(也就是列).这里比如说你想把它变作2行,总元素8个,那么列的元素个数自然就是4(2*4=8).

这里有的人会想到,如果将一个880*800的成2维,那难道还要拿出计算机么,答案是不用,reshape(x,y)函数中,x、y参数,将其中的任意一个值用 -1 替换,此时它将自动计算此轴的长度。看看下面的大家就明白了:

1

OK,差不多就是这样,最后可以看到,其实它还是可以转换成高维的,至于怎么计算元素个数,大家可以自己动敲一敲,很快就理解了。

1 0