np.reshape返回错误' ValueError:新数组的总大小必须保持不变'

时间:2017-01-25 21:38:56

标签: python python-3.x numpy

我尝试输入的数组长度为240.

我试过了:

r = np.reshape(array, (3, 80))

因为我在这个网站的其他地方读到了进入重塑的行和列必须乘以数组长度。

但是,我仍然收到错误:

  

ValueError:新数组的总大小必须保持不变

1 个答案:

答案 0 :(得分:1)

您说您的阵列中有其他尺寸,因此您需要保留它们:

>>> arr = np.random.random((240, 215, 3))
>>> reshaped = np.reshape(arr, (3, 80, arr.shape[1], arr.shape[2]))
>>> reshaped.shape
(3, 80, 215, 3)

或使用解压缩以避免对尺寸进行硬编码:

>>> reshaped = np.reshape(arr, (3, 80, *arr.shape[1:]))
(3, 80, 215, 3)

如果您希望对最后一个维度进行调整,那么您还可以使用-1作为重塑中的最后一个轴:

>>> reshaped_ravel = np.reshape(arr, (3, 80, -1))
>>> reshaped_ravel.shape
(3, 80, 645)