2013-08-31 4 views
2

J'ai un tableau numérique 4-D (d0, d1, d2, d3, d4). Je veux obtenir un 2-D (d0, d1) signifie tableau, Maintenant, ma solution est la suivante:Comment obtenir un tableau moyen avec numpy

area=d3*d4 
mean = numpy.sum(numpy.sum(data, axis=3), axis=2)/area 

Mais Comment puis-je utiliser numpy.mean pour obtenir le tableau moyenne.

Répondre

4

Vous pouvez remodeler puis effectuer la moyenne:

res = data.reshape(data.shape[0], data.shape[1], -1).mean(axis=2) 

En NumPy 1.7.1 vous pouvez passer une ligne à l'argument axis:

res = np.mean(data, axis=(2,3,4)) 
0

Dans au moins la version 1.7.1, mean prend en charge une paire d'axes pour le paramètre axis, bien que cette fonctionnalité ne soit pas documentée. Je crois que c'est un cas de documentation périmée plutôt que quelque chose que vous n'êtes pas censé compter, puisque des routines similaires telles que sum documentent la même fonctionnalité. , Quand même utiliser à vos propres risques:

mean = data.mean(axis=(2, 3)) 

Si vous ne voulez pas utiliser les fonctionnalités non documentées, vous pouvez juste faire deux passes:

mean = data.mean(axis=3).mean(axis=2) 
+0

Mais je pense que votre chemin est un peu plus lent que le mien. Parce que vous avez droit à la division à deux temps – Samuel

+0

@Samuel Pourquoi n'utilisez-vous pas 'timeit' et voyez;) – tacaswell

+0

Il supporte un tuple pour l'axe dans mon NumPy 1.7.1 ... –