NumPy Reshape における -1 の役割を理解する
NumPy では、reshape は、オブジェクトの形状を変換できる強力な関数です。基礎となるデータを維持しながら配列を作成します。 reshape を使用する場合、配列の新しい形状を次元のタプルとして指定できますが、場合によっては、謎の値 -1 に遭遇することがあります。
-1 の意味を解明
配列を再形成する基準は、新しい形状が元の形状と互換性がある必要があることです。このコンテキストでは、-1 は不明なディメンションのプレースホルダーとして機能します。 1 つの次元を -1 として指定すると、NumPy は配列の全長と他の指定された次元に基づいてその次元の実際の値を決定します。
-1 を使用した再形成の例
再形成で -1 がどのように機能するかを説明する例を考えてみましょう。
<code class="python">import numpy as np z = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) print(z.shape) # (3, 4)</code>
(12,) への再形成
<code class="python">reshaped_z = z.reshape(-1) print(reshaped_z.shape) # (12,)</code>
これではこの場合、新しい形状は (-1,) として指定され、1D 配列が必要であることを示します。 NumPy は未知の次元を 12 として計算し、元の配列のすべての要素を含む 1D 配列が得られます。
(-1, 1) に再形成
<code class="python">reshaped_z = z.reshape(-1, 1) print(reshaped_z.shape) # (12, 1)</code>
ここで、NumPy は -1 を未知の行次元として解釈しますが、列次元を 1 として指定します。結果は 12 行 1 列の 2D 配列になります。
(1, -) に再形成します。 1)
<code class="python">reshaped_z = z.reshape(1, -1) print(reshaped_z.shape) # (1, 12)</code>
このシナリオでは、行数を 1 として指定し、列数は不明のままにします。 NumPy は列の次元を 12 と決定し、1 行 12 列の 2D 配列になります。
単一の特徴またはサンプルには -1 を使用します
注意が重要ですNumPy は、単一の特徴を持つデータを再形成する場合は (-1, 1) を使用し、単一のサンプルを含むデータには (1, -1) を使用することを推奨しています。
<code class="python"># Reshape for a single feature single_feature = np.reshape(z, (-1, 1)) # Reshape for a single sample single_sample = np.reshape(z, (1, -1))</code>
-1 の制限
-1 は再形成に柔軟性を提供しますが、両方の次元を不明として指定するために使用することはできません。これを試行すると、ValueError がトリガーされます。
<code class="python"># Attempting to set both dimensions as -1 invalid_reshape = z.reshape(-1, -1) # ValueError: can only specify one unknown dimension</code>
NumPy の再形成における -1 の役割を理解することは、未知の次元の配列を再形成するために重要であり、整合性を維持しながらデータを効果的に操作できるようになります。
以上がNumPy の Reshape 関数における -1 の意味は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。