Fuentes: numpy

import numpy as np

Listas vs vectores de Numpy

lista = [1,2,3,4]
vector = np.array([1,2,3,4]) # vector de numpy
print(lista)
print(vector)
print(np.zeros(2))
print(np.ones(2))
print(np.ones(2, dtype=np.int64))
print(np.arange(4))   
print(np.arange(2, 10, 3)) # desde 2 hasta 10 saltando 3
print(np.linspace(0, 20, num=5))   # 5 elementos separados entre 0 y 20
[1, 2, 3, 4]
[1 2 3 4]
[0. 0.]
[1. 1.]
[1 1]
[0 1 2 3]
[2 5 8]
[ 0.  5. 10. 15. 20.]
print(lista+lista, "vs ", vector+vector )
print(lista*2 , "vs ",vector*2)
[1, 2, 3, 4, 1, 2, 3, 4] vs  [2 4 6 8]
[1, 2, 3, 4, 1, 2, 3, 4] vs  [2 4 6 8]

Matrices

matriz1 = np.array([lista, lista, lista])
matriz2 = np.array([vector, vector, vector])  
matriz3 = np.array([lista,vector, [1, 1, 1, 1]])
matriz4 = np.array([[1,2,3,4]])  # matriz (1 x 4)

print(matriz1)
print(matriz2)
print(matriz3)
print(matriz4)
[[1 2 3 4]
 [1 2 3 4]
 [1 2 3 4]]
[[1 2 3 4]
 [1 2 3 4]
 [1 2 3 4]]
[[1 2 3 4]
 [1 2 3 4]
 [1 1 1 1]]
[[1 2 3 4]]
m_transformada = matriz1 * 2 + 1 
print(m_transformada)
[[3 5 7 9]
 [3 5 7 9]
 [3 5 7 9]]
matriz_suma = matriz1 + matriz1 
print(matriz_suma)
matriz_producto = matriz1 * matriz1
print(matriz_producto)
[[2 4 6 8]
 [2 4 6 8]
 [2 4 6 8]]
[[ 1  4  9 16]
 [ 1  4  9 16]
 [ 1  4  9 16]]
print (matriz1)
print(matriz1.shape)
print (matriz1.T)
print(matriz1.T.shape)
print (matriz4.T)
print(matriz4.T.shape)
[[1 2 3 4]
 [1 2 3 4]
 [1 2 3 4]]
(3, 4)
[[1 1 1]
 [2 2 2]
 [3 3 3]
 [4 4 4]]
(4, 3)
[[1]
 [2]
 [3]
 [4]]
(4, 1)

norma_vector = np.linalg.norm(vector)
norma_matriz = np.linalg.norm(matriz1)  # La matriz se toma como una lista de elementos
norma_matriz_col = np.linalg.norm(matriz1, axis=0)  # La matriz se toma como una lista de elementos
norma_matriz_fila = np.linalg.norm(matriz1, axis=1)  # La matriz se toma como una lista de elementos
print(norma_vector )
print(norma_matriz )
print(norma_matriz_col )
print(norma_matriz_fila )
5.477225575051661
9.486832980505138
[1.73205081 3.46410162 5.19615242 6.92820323]
[5.47722558 5.47722558 5.47722558]

prod_escalar = np.dot(vector, vector)   # NP.DOT acepta listas y vectores
print(prod_escalar)

# Otras formas NO RECOMENDADAS de calcularlo
print (np.sum(vector * vector)) 
print (vector @ vector)     

prod_escalar = 0
for a, b in zip(vector,vector):
    prod_escalar += a * b    
print(prod_escalar)
30
30
30
30
print(np.sum(matriz1, axis=0))    # por columnas
print(np.sum(matriz1, axis=1))    # por filas
[ 3  6  9 12]
[10 10 10]
print(np.mean(matriz1)) 
print(np.mean(matriz1, axis=0))  # por columnas
print(np.mean(matriz1, axis=1))  # por filas
2.5
[1. 2. 3. 4.]
[2.5 2.5 2.5]
matrizCentrada = matriz1.T - np.mean(matriz1, axis=1) # quita la media de cada columna
matrizCentrada = matrizCentrada.T 

print('matriz original')
print(matriz1)
print('matriz centrada')
print(matrizCentrada)

print('Nueva media por columnas')
print(matrizCentrada.mean(axis=1))
matriz original
[[1 2 3 4]
 [1 2 3 4]
 [1 2 3 4]]
matriz centrada
[[-1.5 -0.5  0.5  1.5]
 [-1.5 -0.5  0.5  1.5]
 [-1.5 -0.5  0.5  1.5]]
Nueva media por columnas
[0. 0. 0.]

Otras funciones útiles de Numpy

a = np.array([7,7,1,1,3,1,3,4,5,6,5,7,7,7,7])
print(np.unique(a))  # valores únicos
print(np.sort(a))    # ordenar
print(np.min(a))    # mínimo
print(np.max(a))    # máximo
print(np.concatenate((a, a)))
print(a[a < 5])
print(a[a%2==0])
print(np.flip(a))
[1 3 4 5 6 7]
[1 1 1 3 3 4 5 5 6 7 7 7 7 7 7]
1
7
[7 7 1 1 3 1 3 4 5 6 5 7 7 7 7 7 7 1 1 3 1 3 4 5 6 5 7 7 7 7]
[1 1 3 1 3 4]
[4 6]
[7 7 7 7 5 6 5 4 3 1 3 1 1 7 7]
print (matriz1)
print (matriz1.ndim)
print (matriz1.size)
print (matriz1.shape)
print (matriz1.flatten())
[[1 2 3 4]
 [1 2 3 4]
 [1 2 3 4]]
2
12
(3, 4)
[1 2 3 4 1 2 3 4 1 2 3 4]
a = np.array([1,2,3,4,5,6])
print (a.reshape(3, 2))
print (a.reshape(2, 3))
[[1 2]
 [3 4]
 [5 6]]
[[1 2 3]
 [4 5 6]]
a = np.array([1, 2, 3, 4, 5, 6])
print(a.shape)

a2 = a[np.newaxis, :]
print(a2.shape)
print(np.expand_dims(a, axis=0).shape)

a2 = a[:, np.newaxis]
print(a2.shape)
print(np.expand_dims(a, axis=1).shape)
(6,)
(1, 6)
(1, 6)
(6, 1)
(6, 1)

Exportar / importar a archivo csv

import pandas as pd

a = np.array([[-2.58289208,  0.43014843, -1.24082018, 1.59572603],
              [ 0.99027828, 1.17150989,  0.94125714, -0.14692469],
              [ 0.76989341,  0.81299683, -0.95068423, 0.11769564],
              [ 0.20484034,  0.34784527,  1.96979195, 0.51992837]])
df = pd.DataFrame(a)
print(df)
df.to_csv('pd.csv', index= False)

x = pd.read_csv('pd.csv', header=0).values
print(x)
          0         1         2         3
0 -2.582892  0.430148 -1.240820  1.595726
1  0.990278  1.171510  0.941257 -0.146925
2  0.769893  0.812997 -0.950684  0.117696
3  0.204840  0.347845  1.969792  0.519928
[[-2.58289208  0.43014843 -1.24082018  1.59572603]
 [ 0.99027828  1.17150989  0.94125714 -0.14692469]
 [ 0.76989341  0.81299683 -0.95068423  0.11769564]
 [ 0.20484034  0.34784527  1.96979195  0.51992837]]