Maison >développement back-end >Tutoriel Python >Comment convertir un tableau d'index en un tableau codé à chaud dans NumPy ?

Comment convertir un tableau d'index en un tableau codé à chaud dans NumPy ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 00:09:28627parcourir

How to Convert an Array of Indices to a One-Hot Encoded Array in NumPy?

Conversion d'un tableau d'indices en un tableau codé One-Hot dans NumPy

Souvent, il devient nécessaire de transformer un tableau 1D d'indices dans un tableau 2D où chaque ligne représente un encodage à chaud de l'index correspondant dans le tableau d'origine.

Exemple :

Ayons un tableau 1D d'indices ' a' :

<code class="python">a = np.array([1, 0, 3])</code>

Nous visons à créer un tableau 2D 'b' où chaque ligne est un encodage à chaud de l'index correspondant dans 'a' :

<code class="python">b = np.array([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1]])</code>

Solution :

Pour réaliser cette transformation, nous pouvons utiliser les étapes suivantes :

  1. Création d'un tableau mis à zéro :
    Créer un tableau mis à zéro :
Créer un tableau 'b' avec suffisamment de colonnes pour accueillir la valeur d'index maximale dans 'a', plus un ('a.max() 1').
<code class="python">b = np.zeros((a.size, a.max() + 1))</code>

  1. Un -Hot Encoding :
Pour chaque ligne 'i' du tableau, définissez la 'a[i]'ième colonne sur 1. Cette étape transforme chaque index dans 'a' en une ligne codée à chaud dans 'b'.
<code class="python">b[np.arange(a.size), a] = 1</code>

Sortie :

<code class="python">[[ 0.  1.  0.  0.]
 [ 1.  0.  0.  0.]
 [ 0.  0.  0.  1.]]</code>
L'exécution de ce code produit le tableau codé à chaud souhaité 'b' :

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!

Déclaration:
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