2 votes

Méthode pythonique pour évaluer les moyennes sur un grand ensemble de données

J'ai un vecteur X qui se compose de N = 10e6 valeurs. J'aimerais calculer la moyenne des paires croissantes. Par exemple :

for i in range(0,N-1):
    Ex[i] = X[0:i+1].mean()

Il s'agit d'une méthode terriblement inefficace. Quel serait un algorithme plus intelligent pour Python ? Note Ex y X sont tous deux des tableaux numpy de valeurs flottantes.

7voto

Yakym Pirozhenko Points 5759

A numpy -La solution centrée sur l'homme pourrait être la suivante :

X = np.random.rand(10**6)
EX = np.cumsum(X) / np.arange(1, X.shape[0]+1)

3voto

Jean-François Fabre Points 94672

Pas un numpy mais cela évite de calculer la somme des éléments à chaque fois. Il suffit d'accumuler la somme :

current_sum = 0.0
for i in range(0,N-1):
    current_sum += X[i]
    Ex[i] = current_sum/(i+1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X