Calcul moyenne d'une colonne d'une matrice sous python

Fermé
FIFI - Modifié le 15 avril 2019 à 23:37
 FIFI - 16 avril 2019 à 13:34
Bonjour,
voici mon programme :
df4 = df[['PetalLengthCm','PetalWidthCm']]
df5 = df4.to_numpy()
lig5, col5 = df5.shape
PetalLengthMoy = 0
PetalLengthCmMed = []
PetalWidthMoy = 0
PetalWidthCmMed = []
for i in range (lig5):
    for j in range(col5):
        if df5[i][0]:
            PetalLengthCmMed.append(df5[i][0])           
        if df5[i][1]:
            PetalWidthCmMed.append(df5[i][1])
for k in range(0, len(PetalLengthCmMed)):
    PetalLengthMoy = (PetalLengthMoy + PetalLengthCmMed[k])
for l in range(0, len(PetalWidthCmMed)):
    PetalWidthMoy = (PetalWidthMoy + PetalWidthCmMed[l])
print (PetalWidthCmMed)


mon problème se trouve au niveau de
for i in range (lig5):
    for j in range(col5):
        if df5[i][0]:
            PetalLengthCmMed.append(df5[i][0])           
        if df5[i][1]:
            PetalWidthCmMed.append(df5[i][1])

cette boucle append deux fois la même valeur dans la liste au lieu d'une seule fois, je me retrouve donc avec 300 valeurs dans ma liste au lieu de 150 ce qui foire complètement le calcul pour PetalLengthMoy et PetalWidthMoy

j'ai pu trouver une solution pour obtenir le bon résultat cependant ça n'enlève pas le fait que la bouche append 2 fois la même valeur donc c'est pas trop top niveau otpimisation.

Je vous remercie par avance pour vos suggestions très appréciées !


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Après quelques tentatives, problème résolu, il fallait changer cette ligne de code :
for i in range (lig5):
for j in range(col5):
if df5[i][0]:
PetalLengthCmMed.append(df5[i][0])
if df5[i][1]:
PetalWidthCmMed.append(df5[i][1])
par :
for i in range (lig5):
if df5[i][0]:
PetalLengthCmMed.append(df5[i][0])
if df5[i][1]:
PetalWidthCmMed.append(df5[i][1])
0