在Python中,如果我重塑一个数组,我一般没问题:
arr1 = np.array([1,2,3,4])
print np.reshape(arr1, (2, 2, 1))
但是当我尝试重塑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数字。为什么我不能重塑阵列?
答案 0 :(得分:5)
你想要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
(a.k.a。None
)进行索引:
a1 = X_train_s[:, :, np.newaxis]