新しい形状を提供するために満たす基準は、「新しい形状は元の形状と互換性があること」です。
numpyを使用すると、新しい形状パラメーターの1つを-1として指定できます(例:(2、-1)または(-1,3)、ただし(-1、-1)は不可)。それは単にそれが未知の次元であることを意味し、私たちはナンピーにそれを理解してもらいたいのです。そしてnumpyは「配列の長さと残りの次元」を見て、それが上記の基準を満たすことを確認することでこれを理解し ます
今例を見てください。
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
(-1)で形を変えようとしています。結果の新しい形状は(12、)であり、元の形状(3,4)と互換性があります
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
(-1、1)で形を変えようとしています。列は1、行は不明として指定しています。したがって、(12、1)として結果の新しい形状が得られます。再び元の形状(3,4)と互換性があります。
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
上記は、単一の機能numpy
に使用するreshape(-1,1)
ためのアドバイス/エラーメッセージと一致しています。つまり、単一の列
array.reshape(-1, 1)
データに単一の機能がある場合に使用してデータを再形成する
(-1、2)のような新しい形状。行不明、列2。結果として新しい形状(6、2)を取得
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
現在、列を不明として保持しようとしています。(1、-1)のような新しい形状。つまり、行は1、列は不明です。(1、12)のような新しい形状が得られます
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
上記は、単一のサンプルnumpy
に使用するreshape(1,-1)
ためのアドバイス/エラーメッセージと一致しています。つまり、単一行
単一のサンプルarray.reshape(1, -1)
が含まれている場合に使用してデータを再形成する
新しい形状(2、-1)。行2、列は不明です。(2,6)として結果の新しい形状を取得します
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
(3、-1)としての新しい形状。行3、列は不明です。(3,4)として結果の新しい形状を取得します
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
そして最後に、両方の次元を不明として、つまり(-1、-1)として新しい形状を提供しようとすると、エラーが発生します
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
、同じ数の要素を維持するために与えられた次元の積で割ったものになります。