📌  相关文章
📜  ValueError:无法将大小为 98292 的数组重塑为形状 (16382,1,28) 站点:stackoverflow.com - Python (1)

📅  最后修改于: 2023-12-03 15:20:56.700000             🧑  作者: Mango

Python ValueError: Unable to reshape array of size 98292 into shape (16382,1,28)

如果你是Python程序员,并且偶尔遇到过以上的错误,那么恭喜你已经成为了一个真正的Python开发者。

这个错误通常发生在尝试将Numpy数组重塑为不同形状的时候。在这个例子中,我们尝试将一个大小为98292的数组重塑为(16382, 1, 28)的形状,但是由于数组的大小是不匹配的,所以导致了ValueError错误。

通常情况下,当我们想要重塑一个数组时,我们使用numpy.reshape()函数。例如:

import numpy as np

a = np.arange(12)
b = a.reshape(3, 4)
print(b)

这个代码将生成一个类似这样的数组:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

但是,如果我们尝试使用numpy.reshape()函数将一个大小为98292的数组重塑为形状 (16382,1,28),那么就会发生ValueError错误,因为这两个数组的大小是不匹配的。

解决这个问题的一个简单方法是使用numpy.resize()函数。numpy.resize()函数允许我们调整数组的大小。当数组的大小不够时,函数会重复数据以填充数组。例如:

a = np.array([1, 2, 3])
np.resize(a, (5))

这个代码将生成一个大小为5的数组,并且重复原始数组中的元素以填充新数组:

[1 2 3 1 2]

在我们的例子中,我们可以使用np.resize()将数组重塑为更大的形状,以便在之后可以使用numpy.reshape()函数重新调整为需要的形状:

a = np.random.rand(98292)
b = np.resize(a, (16382, 28, 1))
c = b.reshape(16382, 1, 28)

在这个例子中,我们首先使用np.random.rand()函数创建了一个大小为98292的数组。接下来,我们使用np.resize()将数组调整为更大的形状(16382, 28, 1)。最后,我们使用numpy.reshape()将数组调整为需要的形状 (16382,1,28)。

总而言之,当你遇到这个错误时,最好的解决方法是使用numpy.resize()函数调整数组的大小,以便在之后使用numpy.reshape()函数重新调整为需要的形状。