Numpy TypeError:只有length-1数组可以转换为Python标量(重塑)

时间:2017-02-16 18:02:30

标签: python arrays numpy

在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数字。为什么我不能重塑阵列?

1 个答案:

答案 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]