np.mean() vs np.average() en Python NumPy?
numpy average python (4)
En su invocación, las dos funciones son las mismas.
average
puede calcular un promedio ponderado.
El título lo dice todo.
Noto que
In [30]: np.mean([1, 2, 3])
Out[30]: 2.0
In [31]: np.average([1, 2, 3])
Out[31]: 2.0
Sin embargo, debería haber algunas diferencias, ya que después de todo son dos funciones diferentes.
Cuáles son las diferencias entre ellos?
Hay otra diferencia importante que debes tener en cuenta:
average
, no se toman en cuenta las máscaras, por lo tanto, calcule el promedio sobre todo el conjunto de datos.
mean
toma en cuenta máscaras, por lo tanto, calcule la media solo sobre los valores sin máscara.
g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)
np.average(f)
Out: 34.0
np.mean(f)
Out: 2.0
np.average toma un parámetro de peso opcional. Si no se suministra, son equivalentes. Eche un vistazo al código fuente: Mean , Average
np.mean:
try:
mean = a.mean
except AttributeError:
return _wrapit(a, ''mean'', axis, dtype, out)
return mean(axis, dtype, out)
np.average:
...
if weights is None :
avg = a.mean(axis)
scl = avg.dtype.type(a.size/avg.size)
else:
#code that does weighted mean here
if returned: #returned is another optional argument
scl = np.multiply(avg, 0) + scl
return avg, scl
else:
return avg
...
np.mean
siempre calcula una media aritmética y tiene algunas opciones adicionales para entrada y salida (por ejemplo, qué tipos de datos usar, dónde colocar el resultado).
np.average
puede calcular un promedio ponderado si se proporciona el parámetro de weights
.