2D 配列は を使用して 1D 配列に変更できます.reshape(-1)
。例:
>>> a = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> a.reshape(-1)
array([[1, 2, 3, 4, 5, 6, 7, 8]])
通常、array[-1]
最後の要素を意味します。しかし、ここで -1 はどういう意味でしょうか?
ベストアンサー1
新しい形状を提供するために満たすべき基準は、「新しい形状は元の形状と互換性がある必要がある」ということです。
NumPy では、新しい形状パラメータの 1 つを -1 として指定できます (例: (2,-1) または (-1,3) ですが、(-1, -1) は指定できません)。これは単に、未知の次元であり、NumPy にそれを計算させたいことを意味します。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