Moyennes dans tableaux

Résolu
Akre66 Messages postés 57 Statut Membre -  
Akre66 Messages postés 57 Statut Membre -
Bonjour,
Je viens de commencer le Python depuis 3 jours (j'ai déjà pas mal coder en C/C++ et Perl).
Je dois faire un programme, qui va dans un fichier h5, recupére à un "sous fichier h5", des nombreuses valeurs.
Elle sort 4 tableaux de dimension 7*7*16 (disons [x,y,z])

De ce tableau, je dois faire la moyenne des chaque tableau en fonction de z...
Donc la moyenne de Tab1 pour z=0, z=1...

Puis comparer les moyennes, déduire la plus grande etc...

Alors mon soucis actuel est que j'arrive pas à faire la moyenne. J'ai réussi à récupérer les valeurs exactes. Mais quand il s'agit de faire la moyenne (alors qu'en soit la logique semble plus simple) j'arrive pas.
Elle me sort une valeur trop petite (facteur 1/10 facile).

Pour information:
Dans les valeurs prélevés il y a des valeurs, au bord du tableau (ceci représente un schémas en réalité) qui valent 0. Ces valeurs ne doivent pas compter dans la moyenne.

Ma logique est la suivante, parcourir les Z. Puis les y et x afin de sommer les valeurs, pour à la fin diviser par le nombres de valeurs (que j'ai compté à la main). J'associe cette valeur à une case d'un tableau sortie, puis passe à Z suivant et la ligne suivante de mon tableau.

3 réponses

  1. Utilisateur anonyme
     
    Bonjour

    Problème d'algo : tu n'initialises pas x=0 et y=0 aux bons endroits.
    1
  2. Akre66 Messages postés 57 Statut Membre
     
    Désolé j'ai pas mal de bug...

    Pour programme:

    def Moyennes(Tab):
    ##On intialise les valeurs
    	fRES=open("SOMMES", "w")
    	
    	z=0
    	y=0
    	x=0
    	SOM=0
    	MOY= np.zeros(shape=16)
    ##On parcourt le tableau sous les differentes cotes
    	while z<=15:
    		fRES.write("\n \nZ=".format(z))
    	
    ###Onb parcourt les valeurs selon x et y	
    		while y<8:
    			fRES.write("\n Y=".format(y))
    			while x<8:
    				SOM=SOM+Tab[x,y,z] ##on Somme les valeurs
    				x=x+1
    				fRES.write(format(SOM))
    				fRES.write("\n")
    			y=y+1
    ##On divise la somme par 58.25
    		a=SOM/41
    ##On retiens la valeur	
    		MOY[z]=a
    		SOM=0
    		z=z+1 ##On passe a la va leur suivante
    	fRES.close()	
    	return(MOY)


    Si vous avez des questions/commentaires/aides, j'en serai ravi
    Merci,
    0
  3. Akre66 Messages postés 57 Statut Membre
     
    A oui !
    Je suis un boulet... problème réglés.

    Merci le père
    0