NumPy の Reshape 関数における -1 の意味は何ですか?

Barbara Streisand
リリース: 2024-10-20 22:10:30
オリジナル
138 人が閲覧しました

What is the Significance of -1 in NumPy's Reshape Function?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!