Quelle est la signification de -1 dans la fonction Reshape de NumPy ?

Barbara Streisand
Libérer: 2024-10-20 22:10:30
original
139 Les gens l'ont consulté

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

Comprendre le rôle de -1 dans NumPy Reshape

Dans NumPy, reshape est une fonction puissante qui nous permet de transformer la forme d'un tableau tout en conservant les données sous-jacentes. Lors de l'utilisation de reshape, nous pouvons spécifier la nouvelle forme du tableau sous la forme d'un tuple de dimensions, mais parfois, nous pouvons rencontrer la valeur énigmatique de -1.

Démêler la signification de -1

Le critère pour remodeler un tableau est que la nouvelle forme doit être compatible avec la forme originale. Dans ce contexte, -1 sert d'espace réservé pour une dimension inconnue. Lorsque nous spécifions une dimension comme -1, NumPy détermine la valeur réelle de cette dimension en fonction de la longueur totale du tableau et des autres dimensions spécifiées.

Exemples de remodelage avec -1

Considérons un exemple pour illustrer comment -1 fonctionne dans le remodelage.

<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>
Copier après la connexion

Remodelage en (12,)

<code class="python">reshaped_z = z.reshape(-1)

print(reshaped_z.shape)  # (12,)</code>
Copier après la connexion

Dans ce Dans ce cas, la nouvelle forme est spécifiée comme (-1,), indiquant que nous voulons un tableau 1D. NumPy calcule la dimension inconnue comme 12, ce qui donne un tableau 1D contenant tous les éléments du tableau d'origine.

Remodelage en (-1, 1)

<code class="python">reshaped_z = z.reshape(-1, 1)

print(reshaped_z.shape)  # (12, 1)</code>
Copier après la connexion

Ici, NumPy interprète -1 comme dimension de ligne inconnue, tandis que nous spécifions la dimension de colonne comme 1. Le résultat est un tableau 2D avec 12 lignes et 1 colonne.

Remodelage en (1, - 1)

<code class="python">reshaped_z = z.reshape(1, -1)

print(reshaped_z.shape)  # (1, 12)</code>
Copier après la connexion

Dans ce scénario, nous spécifions le nombre de lignes comme 1, laissant le nombre de colonnes inconnu. NumPy détermine la dimension de la colonne comme étant 12, ce qui donne un tableau 2D avec 1 ligne et 12 colonnes.

Utilisation de -1 pour des fonctionnalités uniques ou des échantillons

Il est important de noter que NumPy recommande d'utiliser (-1, 1) pour remodeler les données avec une seule fonctionnalité et (1, -1) pour les données contenant un seul échantillon.

<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>
Copier après la connexion

Limitations de -1

Bien que -1 offre une flexibilité de remodelage, il ne peut pas être utilisé pour spécifier les deux dimensions comme inconnues. Tenter de le faire déclenchera une 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>
Copier après la connexion

Comprendre le rôle de -1 dans le remodelage NumPy est crucial pour remodeler des tableaux de dimensions inconnues, nous permettant de manipuler efficacement les données tout en préservant leur intégrité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!