0
votes

J'ai deux listes, j'ai besoin de choisir un échantillon aléatoire dans une liste et de la deuxième liste choisie les indices correspondants.

J'ai deux listes. Un avec des données d'échantillonnage et une avec des étiquettes correspondantes. J'ai besoin de choisir des données de manière aléatoire à partir des données d'échantillon, mais j'ai également besoin de leurs étiquettes correspondantes.

C'est ce que je fais actuellement: P>

['C','A']
['3','1']

['B','D']
['2','4']


2 commentaires

Créez une liste zippée dans les deux listes et choisissez un élément de cette liste


pour A et b lists, la liste (zip (a, b)) est une liste zippée


6 Réponses :


3
votes

zip Les deux listent ensemble, choisissez un élément à partir de la liste zippée:

>>> list1
['B', 'A']
>>> list2
['2', '1']
>>> 


1 commentaires

Merci, j'ai fini par faire cela pour décompresser: Unzipped = zip (* zippé) RAWTRAINAININGDATA = Décompressé [0] TrainingLabels = décompressé [1]



0
votes

Code:

['1', '3']


1 commentaires

Cela pourrait ne pas donner les résultats souhaités si les listes contiennent des doublons, et il aurait besoin de modification si la deuxième liste n'était que de nombreuses nombreuses numéros et que la recherche de l'index de cette manière n'est pas efficace, ce qui pourrait avoir une bonne affaire. Si les listes réelles sont aussi importantes que le contexte d'apprentissage de la machine suggérerait.



0
votes

Je pense que ce que les commentateurs suggèrent est

j = list(zip(rawTrainingData, trainingLabels)
selected = random.sample(j, amount)
selected_training_data = [td for (td, l) in selected]
selected_labels = [l for (td, l in selected]


0 commentaires

0
votes

Si vous souhaitez obtenir deux listes de deux listes de deux listes différentes, par exemple A, B

('C', 'A') ('3', '1')


0 commentaires

0
votes
import random
import numpy as np

def _random_sample(X, y, sample_size):
  data =[(i,j) for i,j in zip(X, y)]
  data_2= random.sample(data, sample_size)
  del data
  
  X1 = []
  y1 = []
  for t in data_2:
   X1.append(t[0])
   y1.append(t[1])
  
  del data_2
  X1 = np.array(X1)
  y1 = np.array(y1)
  return X1, y1


X_train=[ [1,1,1], [2,2,2],  [3,3,3], [4,4,4] ]
y_train =['a', 'b', 'c', 'd']

X1, y1 = _random_sample(X_train, y_train, 3)

0 commentaires

0
votes
import random       

a = [i for i in range(1,10)]        
b = [i*10 for i in range(1,10)]        

random.seed(110)        
print(random.sample(a,4)    

random.seed(110)        
print(random.sample(b,4))       
If you set your seed to a fixed value, then the numbers that are generated will be always in the same order.

0 commentaires