Moyennes dans tableaux

Résolu
Akre66 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -  
Akre66 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -
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

Utilisateur anonyme
 
Bonjour

Problème d'algo : tu n'initialises pas x=0 et y=0 aux bons endroits.
1
Akre66 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
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
Akre66 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
A oui !
Je suis un boulet... problème réglés.

Merci le père
0