1 votes

Comment reproduire des données en numpy avec random.choice ?

Je dispose d'un ensemble de données étiquetées :

data = np.array([5.2, 4, 5, 2, 5.3, 10, 0])
labels = np.array([1, 0, 1, 2, 1, 3, 4])

Je souhaite sélectionner les données 5.2, 5 and 5.3 avec l'étiquette 1 et la reproduire, comme suit :

datalabel1 = data[(labels == 1)]

Ensuite, je veux faire un random.choice() par exemple (pseudo) :

# indices are the indices from label 1
random_choices = np.random.choice(indices, size = 5)

Et obtenir en sortie différentes valeurs avec différents indices :

# indices are the different indices of the data from the pool out of random choice
data:    [5.3 5.2 5.2 5.2 5]
indices: [4 0 0 2 2]

Mon objectif est d'effectuer une sélection à partir d'un pool de données d'étiquette 1.

1voto

Mad Physicist Points 3218

labels == 1 est un masque booléen. Vous devez l'appliquer à data et non de revenir à labels pour obtenir les éléments de données étiquetés 1 :

np.random.choice(data[labels == 1], ...)

Vous pouvez également convertir labels == 1 à un ensemble d'indices et choisir sur ces indices antes de l'indexation :

indices = np.flatnonzero(labels == 1)
data[np.random.choice(indices, ...)]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X