Je suis vraiment nouveau à Python et j'essaie de trouver la moyenne d'une liste de listes. J'ai une liste des listes de nombres de flotteurs qui indiquent les qualités de cours par semestre et ressemble à ceci:
for s in mylist: # for each list gpa = sum(s) / len(s) allGPA.append(gpa) for x in s: # for each sublist x_ = x if type(x) is list else [x] myaverage.append(sum(x_) / float(len(x_)))
3 Réponses :
Essayez:
from statistics import mean avg = [[ mean(sub_list) for sub_list in list ] for list in mylist]
Je pense qu'il serait prudent de conserver vos données dans une sorte de collection, utilise un dictionnaire et créer une fonction lisible pour analyser vos données.
return_averages(mylist) defaultdict(list, {0: [2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335], 1: [2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335, 2.335]})
Nitpick: au lieu de
si type (x) est la liste code>, utilisez
si isinstance (x, liste) code>
MyList CODE> est une liste de listes de listes, de sorte que vous avez besoin d'une boucle supplémentaire là-bas. Ou, remplacez tout avec
np.array (myList) .Mean (axe = -1) code>
Vous avez 2 niveaux de sublistes. Vous vous attendez peut-être à
Imprimer ([[[[SUM (I) / LEN (I) pour I in L] pour L dans la myiste]) Code>
@Marat Ceci me donne une erreur de _method.py in _Mean: ret = ret / rcount, puis à nouveau: TypeError: type (s) de l'opérande non pris en charge pour /: 'Liste' et 'int' et 'int'
@PIGGY J'ai mis à jour ma réponse et c'est comme vos attentes. Jetez un coup d'oeil s'il vous plait.