Numpy reshape 允许在一个维度上使用 -1, 意思是 “unknown” 。 numpy reshape 的一个假设是新旧 shape 所包含的数据相等, 所以当其他维度已知, 总数据量已知的情况下, numpy 就可以推断出剩余一个维度的信息。
如下例, reshape 允许一个维度为 -1
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
--------------------------------------------------------
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
--------------------------------------------------------
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
但是 numpy 不允许2个维度为-1, 因为这样就无法做出准确的推断了。
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
网友评论