【发布时间】:2017-05-21 18:55:58
【问题描述】:
这是我正在尝试的示例代码
def normalizeImages(data):
x = np.shape(data)[0]
y = np.shape(data)[1]
z = np.shape(data)[2]
w = np.shape(data)[3]
darray = np.array(data)
dflat = darray.flatten()
mindflat = min(dflat)
maxdflat = max(dflat)
for x in range(0, len(dflat)):
dflat[x] = (dflat[x] - mindflat)/(maxdflat - mindflat)* 255
arraynd = np.reshape(dflat, (x, y, z, w))
return arraynd.tolist();
X_valid = normalizeImages(X_valid)
它失败了
ValueErrorTraceback (most recent call last) <ipython-input-33-eb3d96398060> in <module>()
19 return arraynd.tolist();
20
---> 21 X_valid = normalizeImages(X_valid)
22 #X_train = normalizeImages(X_train)
23 #X_test = normalizeImages(X_test)
<ipython-input-33-eb3d96398060> in normalizeImages(data)
16 for x in range(0, len(dflat)):
17 dflat[x] = (dflat[x] - mindflat)/(maxdflat - mindflat)* 255
---> 18 arraynd = np.reshape(dflat, (x, y, z, w))
19 return arraynd.tolist();
20
C:\ProgramData\Miniconda3\envs\carnd-term1\lib\site-packages\numpy\core\fromnumeric.py in reshape(a, newshape, order)
222 except AttributeError:
223 return _wrapit(a, 'reshape', newshape, order=order)
--> 224 return reshape(newshape, order=order)
225
226
ValueError: total size of new array must be unchanged
输入 X_valid 是一个 4 维形状列表 (4410, 32, 32, 3)。谁能解释为什么会失败以及如何解决?
【问题讨论】:
-
不是说它回答了你的问题,而是你为什么要扁平化你的数据——为什么要使用 for 循环?
-
您正在更改循环中变量
x的值。这里for x in range(0,len(dflat)): -
我是 python 新手,所以我只能使用循环和展平。感谢您的酷方法!我一直在寻找这个很久,但从来没有意识到 x 在代码中的明显用法。感谢您发现错误。
标签: python arrays numpy jupyter