NumPy ofrece un repertorio completo de operaciones entre escalares, vectores y matrices representados por ndarrays.
In [15]:
import numpy as np
Operaciones entre un ndarray y un escalar se aplican elemento por elemento
In [16]:
a = np.array([ 1., 2., 3. ])
a+1
Out[16]:
In [17]:
2*a
Out[17]:
In [18]:
a**2
Out[18]:
In [20]:
2**a
Out[20]:
In [23]:
b = np.array([ [1,2,3], [4,5,6] ])
b
Out[23]:
In [25]:
2*b+1
Out[25]:
Operaciones entre ndarrays operan elemento por elemento
In [26]:
a2 = np.array([ 2,3,4 ])
a2
Out[26]:
In [27]:
a+a2
Out[27]:
In [28]:
a*a2
Out[28]:
In [29]:
unos = np.ones(b.shape)
unos
Out[29]:
In [30]:
b+unos
Out[30]:
In [32]:
# Operacion elemento por elemento (equivalente en Matlab a .*)
b*unos
Out[32]:
Funciones trascendentales operan sobre cada uno de los elementos de un ndarray
In [34]:
b
Out[34]:
In [35]:
np.exp(b)
Out[35]:
In [36]:
np.log(b)
Out[36]:
In [39]:
np.cos(b), np.sin(b), np.tan(b)
Out[39]:
Comparaciones entre ndarrays operan elemento por elemento
In [40]:
a, a2
Out[40]:
In [47]:
# igualdad de elementos
a==a2
Out[47]:
In [48]:
a+1 == a2
Out[48]:
In [49]:
# Desigualdad del elementos
a+1 != a2
Out[49]:
In [50]:
# Comparaciones entre elementos
a<a2
Out[50]:
In [86]:
a**2 > a2
Out[86]:
Comprobar condiciones booleanas sobre algunos/todos los elementos
In [88]:
(a**2 > a2).all()
Out[88]:
In [89]:
(a**2 > a2).any()
Out[89]:
Si se desea determinar la igualdad de todo el ndarray
In [52]:
np.array_equal(a,a2)
Out[52]:
In [53]:
np.array_equal(a+1,a2)
Out[53]:
In [56]:
np.array_equal( np.arange(1,7).reshape((2,3)), b)
Out[56]:
Transpuesta de un ndarray
In [59]:
# No tiene efecto en vectores
a.T
Out[59]:
In [60]:
b.T
Out[60]:
In [64]:
c = np.arange(1,13).reshape((2,3,2))
c
Out[64]:
In [66]:
# Transposición en mayores dimensiones
c.T
Out[66]:
Obtener la suma de los elementos
In [68]:
a.sum()
Out[68]:
In [69]:
b.sum()
Out[69]:
Obtener la suma a lo largo de una de las dimensiones
In [70]:
b.sum(axis=0)
Out[70]:
In [71]:
b.sum(axis=1)
Out[71]:
Asi mismo, aplica para arreglos de mayor dimensionalidad
In [72]:
c.sum(axis=2)
Out[72]:
Obtener máximo y mínimo
In [74]:
a.max(), a.min()
Out[74]:
In [75]:
b.max(), b.min()
Out[75]:
o sobre los elementos de un eje
In [77]:
b.max(axis=0)
Out[77]:
In [78]:
b.min(axis=1)
Out[78]:
Posición del mayor y menor elemento
In [82]:
np.argmin(b), np.argmax(b)
Out[82]:
In [95]:
a
Out[95]:
In [97]:
np.mean(a), np.median(a), np.var(a), np.std(a)
Out[97]:
In [98]:
b
Out[98]:
In [99]:
np.mean(b), np.median(b), np.var(b), np.std(b)
Out[99]:
In [102]:
# Se pueden obtener con respecto a uno de los ejes
b.mean(axis=0), b.mean(axis=1)
Out[102]:
Cuando se realizan operaciones entre ndarrays de diferente tamaño, NumPy replica los datos de forma que queden estructuras compatibles para realizar la operación
In [116]:
a+b # Se hace broadcast del arreglo a todas las filas
Out[116]:
In [117]:
d = np.ones((2,3))
d[0]=2 # Se hace broadcast del 2 a todas las columnas
d
Out[117]:
In [119]:
r = np.random.randn(4,6)
r
Out[119]:
In [127]:
# Ordenar por filas
np.sort(r)
r
Out[127]:
In [131]:
# Ordenar por columnas
np.sort(r, axis=0)
Out[131]:
In [136]:
# Obtener los indices del arreglo ordenado
f = np.array([ 15,14,13,11,12 ])
np.argsort(f)
Out[136]:
In [137]:
f[np.argsort(f)]
Out[137]:
In [ ]: