在 Python 中,如果我 reshape 一个数组,一般来说我没有问题:
arr1 = np.array([1,2,3,4])
print np.reshape(arr1, (2, 2, 1))
但是当我尝试 reshape 10240 x 62 numpy ndarray 时遇到问题:
a1 = np.reshape(X_train_s, (X_train_s[0], X_train_s[1], 1))
错误是:
...in reshape
return reshape(newshape, order=order)
TypeError: only length-1 arrays can be converted to Python scalars
ndarray X_train_s 包含 float32 数字。为什么我不能 reshape 数组?
请您参考如下方法:
您想要 X_train_s 的第一维和第二维的长度,但是当您这样做时
(X_train_s[0], X_train_s[1], 1)
您使用了第一和第二个整行,而不是第一个和第二个维度的长度。如果你想访问维度长度,你应该索引数组的 shape:
(X_train_s.shape[0], X_train_s.shape[1], 1)
您可能还想考虑将这个额外的长度为 1 的轴添加到数组的其他方法,例如使用 np.newaxis(又名 None)进行索引:
a1 = X_train_s[:, :, np.newaxis]
