2017-09-03 1 views
0

J'essaie de calculer le np.sum des éléments dans chaque tableau. J'ai essayé à la place de np.sum(outcome_list[0] == 'H' juste de le laisser comme np.sum(outcome_list[j] == 'H' de sorte que chaque "liste" aurait son propre ensemble de données sur le nombre total de têtes, mais il ne l'a pas aimé. La plus grande question est, comment pourrais-je construire un tableau avec une liste de base donnée et l'action à faire dans chaque élément de cette liste?Somme des éléments dans un tableau de la liste

enter image description here

EDIT:

la définition de throw_a_coin

def throw_a_coin(N): 
    return np.random.choice(['H','T'], size=N) 
N =40 

essais (voir ci-dessus) est l'ensemble à être sollicité

for i in trials: 
    throws = throw_a_coin(i) 
    outcome_list.append(throws) 

for j in outcome_list: 
    print("Number of Heads:", np.sum(outcome_list[0] == 'H')) 
    print (j) 

EDIT 2:

problème

résolu avec celui indiqué ci-dessous, mais je reçois plus de 13 chiffres pour les « probabilités » - il semble que le système est en cours d'exécution à travers les épreuves liste plus d'une fois.

def throw_a_coin(N): 
    return np.random.choice(['H','T'], size=N) 

trials = [10, 30, 50, 70, 100, 130, 170, 200, 500, 1000, 2000, 5000, 10000] 

for i in trials: 
    throws = throw_a_coin(i) 
    outcome_list.append(throws) 

probabilities = [] 

for j in outcome_list: 
    print("Number of Heads:", np.sum(j == 'H')) 
    print("Number of Throws:", len(j)) 
    print("p = Number of Heads/Total Throws:", (np.sum(j == 'H'))/len(j)) 
    probabilities.append((np.sum(j =='H'))/len(j)) 
    print (j) 
    print("\n") 

print(probabilities) 
+0

Essayez-vous de compter le nombre de têtes? – Rishav

+2

Pouvez-vous s'il vous plaît joindre le code au lieu de la photo du code? –

+0

@Rishav - oui, compte le nombre de têtes pour chacun des essais – aiwan

Répondre

1

Vous étiez presque là! Vous avez juste besoin de remplacer

print("Number of Heads:", np.sum(outcome_list[0] == 'H')) 

avec

print("Number of Heads:", np.sum(j == 'H')) 

Voici la réponse complète:

trials = [10, 30, 50, 70, 100, 130, 170, 200, 500, 1000, 2000, 5000, 10000] 

N =40 
def throw_a_coin(N): 
    return np.random.choice(['H','T'], size=N) 

outcome_list = [] 
for i in trials: 
    throws = throw_a_coin(i) 
    outcome_list.append(throws) 

for j in outcome_list: 
    print("Number of Heads:", np.sum(j == 'H')) 
    print (j) 
+0

J'ai également ajouté "EDIT 2" à la question - il semble que ça passe par "essais" plus d'une fois? – aiwan

0

Si output_list serait un tableau numpy et si chaque ligne de la matrice représentent chaque essai, vous pouvez obtenir la somme d'une manière efficace comme suit:

head_sum = output_list.sum(axis=1) 
0

Je voudrais utiliser une compréhension de la liste suivie d'un appel len.

for j in outcome_list: 
    print("Number of Heads:", len([x for x in j if x == 'H']) 
    print (j) 

AVERTISSEMENT: J'ai aucune expérience avec Numpy. Cependant, ce serait la façon générale Pythonic de le faire sans avoir recours à count.

+0

C'est très bien, mais je recommanderais 'sum (1 pour x dans j si x == 'H')' En utilisant une compréhension de générateur, nous évitons de construire réellement la liste de 'H's. C'est une minuscule différence, mais je pensais juste que je le mentionnerais. –