vectores una tutorial transpuesta matriz matrices llenar identidad funcion español ejemplos como arreglos arange python arrays multidimensional-array numpy mean

tutorial - transpuesta de una matriz en python numpy



Calcular la media a través de la dimensión en una matriz 2D (3)

Tengo una matriz como esta:

a = [[40, 10], [50, 11]]

Necesito calcular la media para cada dimensión por separado, el resultado debería ser el siguiente:

[45,10.5]

45 siendo la media de a[*][0] y 10.5 la media de ''a [*] [1].

¿Cuál es la forma más elegante de resolver esto sin pasar por un ciclo?


Aquí hay una solución no numpy:

>>> a = [[40, 10], [50, 11]] >>> [float(sum(l))/len(l) for l in zip(*a)] [45.0, 10.5]


Si haces esto mucho, NumPy es el camino a seguir.

Si por alguna razón no puedes usar NumPy:

>>> map(lambda x:sum(x)/float(len(x)), zip(*a)) [45.0, 10.5]


a.mean() toma un argumento de axis :

In [1]: import numpy as np In [2]: a = np.array([[40, 10], [50, 11]]) In [3]: a.mean(axis=1) # to take the mean of each row Out[3]: array([ 25. , 30.5]) In [4]: a.mean(axis=0) # to take the mean of each col Out[4]: array([ 45. , 10.5])

O, como una función independiente:

In [5]: np.mean(a, axis=1) Out[5]: array([ 25. , 30.5])

La razón por la que su división no funciona es porque esta es la sintaxis para cortar:

In [6]: a[:,0].mean() # first column Out[6]: 45.0 In [7]: a[:,1].mean() # second column Out[7]: 10.5