Guía rápida de algebra lineal con Numpy + Python
Guía rápida de Algebra lineal con Numpy + Python
- Listas vs vectores de Numpy
- Matrices
- Otras funciones útiles de Numpy
- Exportar / importar a archivo csv
Fuentes: numpy
import numpy as np
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
print(lista+lista, "vs ", vector+vector )
print(lista*2 , "vs ",vector*2)
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)
m_transformada = matriz1 * 2 + 1
print(m_transformada)
matriz_suma = matriz1 + matriz1
print(matriz_suma)
matriz_producto = matriz1 * matriz1
print(matriz_producto)
print (matriz1)
print(matriz1.shape)
print (matriz1.T)
print(matriz1.T.shape)
print (matriz4.T)
print(matriz4.T.shape)
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 )
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)
print(np.sum(matriz1, axis=0)) # por columnas
print(np.sum(matriz1, axis=1)) # por filas
print(np.mean(matriz1))
print(np.mean(matriz1, axis=0)) # por columnas
print(np.mean(matriz1, axis=1)) # por filas
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))
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))
print (matriz1)
print (matriz1.ndim)
print (matriz1.size)
print (matriz1.shape)
print (matriz1.flatten())
a = np.array([1,2,3,4,5,6])
print (a.reshape(3, 2))
print (a.reshape(2, 3))
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)
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)