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

之前遇到这样的小问题,记得我之前是将图像转换为数组的形式存储,之后处理需要转换为二维的数组,大概就是这样。这里就不还原了,我用个简单的小例子阐述下.就是使用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,差不多就是这样,最后可以看到,其实它还是可以转换成高维的,至于怎么计算元素个数,大家可以自己动敲一敲,很快就理解了。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是因为你试图改变一个数组的大小,但是新数组的总大小必须与原数组的总大小相同。例如,如果你有一个形状为(3,4)的数组,它有12个元素,你不能将其大小更改为(2,6),因为新数组的总大小为12,与原数组的总大小相同。你需要确保新数组的大小与原数组的大小相同。 ### 回答2: "valueerror: total size of new array must be unchanged"是NumPy中的一个错误提示,意思是新数组的总大小必须与原数组的总大小保持一致。 这个错误通常发生在使用NumPy的reshape方法时。当我们想要改变数组的形状时,我们可以使用reshape方法来实现。但是在使用reshape方法时,需要保证新数组的总大小与原数组的总大小一致,如果不一致就会出现该错误。 举个例子,假设我们有一个数组arr,其形状为(4, 5),总共有20个元素。如果我们想将其转换为形状为(2, 10)的新数组,我们可以使用reshape方法进行转换。但是如果我们想将其转换为形状为(3, 7)的新数组,就会出现"valueerror: total size of new array must be unchanged"的错误提示,因为新数组的总大小与原数组的总大小不一致。 为了解决这个错误,我们必须确保在使用reshape方法时,新数组的总大小与原数组的总大小一致。可以通过计算原数组的总大小来确定新数组的形状,或者通过调整新数组的形状来使其与原数组的总大小一致。 ### 回答3: valueerror: total size of new array must be unchanged 是一个Python语言中的错误提示信息。它表示在创建一个新的数组时,新数组的总大小必须与原数组的总大小相同。 在Python中,我们可以使用NumPy库来操作数组。当我们尝试创建一个新的数组时,如果新数组的大小与原数组的大小不一致,就会出现该错误。 造成这个错误的原因通常是在计算新数组的大小时出现了错误。比如,我们可能使用了错误的维度大小或者计算新数组的大小时忽略了某些维度。 要解决这个错误,我们需要检查代码中与数组大小相关的部分,确认数组的维度和大小的计算是正确的。我们可以使用NumPy库提供的函数来获取原数组的大小,然后在创建新数组时使用相同的维度和大小。 例如,如果我们要创建一个与原数组大小相同的新数组,可以使用以下代码: ```python import numpy as np # 假设原数组是arr arr = np.array([[1, 2, 3], [4, 5, 6]]) # 获取原数组的大小 size = arr.size # 创建新数组,大小与原数组相同 new_arr = np.zeros(size).reshape(arr.shape) ``` 在这个例子中,我们首先使用arr.size获取了原数组的大小,然后使用np.zeros创建一个大小为size的全零数组,并使用reshape方法将其调整为与原数组arr相同的维度。 通过检查与数组大小相关的部分,并根据需要进行相应的修复,我们可以解决 valueerror: total size of new array must be unchanged 这个错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值