stackoverflowの記事で見つけました。
どういうものか
reshapeの一つのサイズが決まっているとき、もう一方を-1とすると、-1には元の形状から推測された値が入る。(例を見ないと分かりにくい)
公式ドキュメント(翻訳)
新しい形状は、元の形状と互換性がなければなりません。整数の場合、結果はその長さの1次元配列になります。 1つの形状寸法は-1とすることができる。この場合、値は配列の長さと残りの次元から推測されます。
解説
3行4列のnumpy配列があったとします。
source_shape.py
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
-1を渡した場合は、行ベクトルになります。この場合は、列サイズが元の形状から推測されて決定されます。
row_vector.py
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
以下のように、reshape(-1, 2)とすると列数だけが2で決まり、行数は元の形状から推測されて決定されます。
reshape.py
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])