Étant donné deux ndarrays
old_set = [[0, 1], [4, 5]]
new_set = [[2, 7], [0, 1]]
Je cherche à obtenir la moyenne des valeurs respectives entre les deux tableaux afin que les données aboutissent à quelque chose comme:
end_data = [[1, 4], [2, 3]]
fondamentalement, il appliquerait quelque chose comme
for i in len(old_set):
end_data[i] = (old_set[i]+new_set[i])/2
Mais je ne sais pas quelle syntaxe utiliser. Merci pour l'aide à l'avance!
>>> import numpy as np
>>> old_set = [[0, 1], [4, 5]]
>>> new_set = [[2, 7], [0, 1]]
>>> (np.array(old_set) + np.array(new_set)) / 2
array([[1, 4],
[2, 3]])
Vous pouvez créer un tableau 3D contenant vos tableaux 2D à faire la moyenne, puis la moyenne le long de axis=0
en utilisant np.mean
ou np.average
(ce dernier permet des moyennes pondérées):
np.mean( np.array([ old_set, new_set ]), axis=0 )
Ce schéma de moyenne peut être appliqué à tout (n)
- tableau dimensionnel, car le (n+1)
- le tableau dimensionnel contiendra toujours les tableaux originaux à faire la moyenne le long de son axis=0
.
numpy.average
Également numpy.average
peut être utilisé avec la même syntaxe:
import numpy as np
a = np.array([np.arange(0,9).reshape(3,3),np.arange(9,18).reshape(3,3)])
averaged_array = np.average(a,axis=0)
L'avantage de numpy.average par rapport à numpy.mean
est la possibilité d'utiliser également le paramètre de poids comme un tableau de la même forme:
weighta = np.empty((3,3))
weightb = np.empty((3,3))
weights = np.array([weighta.fill(0.5),weightb.fill(0.8) ])
np.average(a,axis=0,weights=weights)
Si vous utilisez des tableaux masqués, pensez également à utiliser numpy.ma.average
car numpy.average
ne vous en occupez pas .