Je voudrais obtenir n échantillons (sans remplacement) à partir du produit de deux listes. Comme indiqué ci-dessous, je suis en train de calculer l'ensemble du produit, puis de l'échantillonner, mais cela devient difficile à gérer pour les longues listes. Y a-t-il un moyen d'optimiser ce processus? Autrement dit, ne pas avoir à calculer le produit entier mais à échantillonner plus efficacement?Le moyen le plus rapide d'échantillonner à partir du produit de deux listes
approche naïve actuelle (par erreur d'échantillonnage avec remplacement, comme il est indiqué ci-dessous):
from itertools import product
from random import choice
def get_sample(a,b,n):
"""return n samples from the product a and b"""
D = list(product(a,b))
D = [choice(D) for _ in range(n)]
return D
Vous avez écrit un échantillon avec remplacement - à savoir, votre code peut choisir le même élément deux fois. Est-ce délibéré? 'random.sample' est un échantillon sans remplacement. – user2357112
Sauf s'il y a quelque chose que votre code est censé faire mais qu'il ne fait pas en ce moment, c'est la même chose que l'échantillonnage de 'a' et l'échantillonnage de' b' 'n' fois. À l'heure actuelle, il n'est pas nécessaire de matérialiser D. – DSM
En cas de remplacement: C'est un très bon point. Désolé, je voulais échantillonner sans remplacement. @DSM: C'est en fait une très bonne idée et semble être en ligne avec ce que les autres suggèrent – Unayko