ValueError:无法将大小为23760的数组重塑为形状(240,1,28,28)

时间:2019-09-21 14:02:57

标签: python pandas image-processing reshape

# Reshape and normalize training data
trainX = train[:, 1:].reshape(train.shape[0],1,28, 28).astype( 'float32' )
x_train = trainX / 255.0

y_train = train[:,98]

# Reshape and normalize test data
testX = test[:,1:].reshape(test.shape[0],1, 28, 28).astype( 'float32' )
x_test = testX / 255.0

y_test = test[:,98]

我尝试将csv train_data和test_data重塑为3-D矩阵,但出现错误:

ValueError Traceback (most recent call last) 
<ipython-input-57-268af51a6b14> in <module>()
----> 1 trainX = train[:, 1:].reshape(train.shape[0],1,28, 28).astype( 'float32' )
      2 x_train = trainX / 255.0
      3
      4 y_train = train[:,98]
      5
ValueError: cannot reshape array of size 23760 into shape (240,1,28,28)

Error Report Screenshoot

1 个答案:

答案 0 :(得分:0)

正如评论中已经提到的,23760!= 240 * 1 * 28 * 28,因此无法重塑到该特定数组中。实际上,28 * 28甚至不除以23760,因此即使将train.shape[0]替换为其他内容,也将永远无法使用。

假设train.shape[0]1是您要用于前两个维度的,则最终维度需要乘积为23760/240 =99。因为这不是平方数字,这两个数字必须有所不同。 99的素数分解为99 = 3 * 3 * 11,因此唯一可能的选择是

(240, 1, 1, 99), (240, 1, 3, 33), (240, 1, 9, 11),

及其排列。