NumPy es el principal paquete para la computación científica con Python
Este mini tutorial esta orientado a una introducción de Python para la Ciencia de Datos. Pueden contactarme aquí para cualquier tipo de sugerencias!. Basado en la cheat sheet de JulianGaal
Índice¶
Numpy básico ¶
Una de las funciones más utilizadas de NumPy son los arreglos o arrays: La principal diferencia entre las listas de python y los arrays de numpy esta dada por la velocidad y las funcionalidades adicionales que poseen estas últimas. Las listas solo nos dan operaciones básicas, pero los arrays de numpy nos agregan FFTs, convoluciones, búsquedas rápidas, estadística, álgebra lineal, histogramas, entre muchas otras cosas.</br> La más importante ventaja que poseen los arrays de numpy para la ciencia de datos, es la habilidad de hacer cálculos a nivel de los elementos.
eje 0
siempre se refiere a una fila
eje 1
siempre se refiere a una columna
Operador | Descripción | Documentación |
---|---|---|
np.array([1,2,3]) |
1d array | link |
np.array([(1,2,3),(4,5,6)]) |
2d array | ver arriba |
np.arange(start,stop,step) |
array desde un rango | link |
Placeholders ¶
Operador | Descripción | Documentación |
---|---|---|
np.linspace(0,2,9) |
Agrega valores equidistantes desde el intervalo hasta el largo del array | link |
np.zeros((1,2)) |
Crea un array de ceros | link |
np.ones((1,2)) |
Crea un array de unos | link |
np.random.random((5,5)) |
Crea un array de números aleatorios | link |
np.empty((2,2)) |
Crea un array vacío | link |
Ejemplos ¶
# Convencion para importar numpy
import numpy as np
# 1 dimension
x = np.array([1,2,3])
# 2 dimensiones
y = np.array([(1,2,3),(4,5,6)])
x, y
# con int
x = np.arange(3)
x
# con float
y = np.arange(3.0)
y
# rango
x = np.arange(3,7)
x
# rango con intervalo
y = np.arange(3,7,2)
y
Arrays ¶
Propiedades de los Arrays ¶
Sintaxis | Descripción | Documentación |
---|---|---|
array.shape |
Dimensiones (Filas,Columnas) | link |
len(array) |
Largo de Arrays | link |
array.ndim |
Numero de dimensiones de Array | link |
array.size |
Números de Elementos de Array | link |
array.dtype |
Tipo de Datos | link |
array.astype(type) |
Convertir tipo de datos | link |
type(array) |
Tipo de Array | link |
Copiando/Ordenando ¶
Operador | Descripciones | Documentación |
---|---|---|
np.copy(array) |
Crea una copia del array | link |
other = array.copy() |
Crea una copia profunda del array | ver arriba |
array.sort() |
Ordena un Array | link |
array.sort(axis=0) |
Ordena los ejes del Array | ver arriba |
Ejemplos ¶
# Ordenar. Ordenar en orden ascendente
y = np.array([10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
y.sort()
y
Manipulación de Arrays¶
Agregando o quitando elementos ¶
Operador | Descripción | Documentación |
---|---|---|
np.append(a,b) |
Agrega items al array | link |
np.insert(array, 1, 2, axis) |
Inserta items al arrays en ejes 0 o 1 | link |
array.resize((2,4)) |
Redimensiona el array a la forma(2,4) | link |
np.delete(array,1,axis) |
Elimina items del array | link |
Combinando Arrays ¶
Operador | Descripción | Documentación |
---|---|---|
np.concatenate((a,b),axis=0) |
Concatena 2 arrays, agrega al final | link |
np.vstack((a,b)) |
Apila array a nivel filas | link |
np.hstack((a,b)) |
Apila array a nivel columna | link |
Dividiendo Arrays ¶
Operador | Descripción | Documentación |
---|---|---|
numpy.split() |
link | |
np.array_split(array, 3) |
Divide un array en sub-arrays de (casi) idéntico tamaño | link |
numpy.hsplit(array, 3) |
Divide el array en forma horizontal en el 3er índice | link |
Mas ¶
Operador | Descripción | Documentación |
---|---|---|
other = ndarray.flatten() |
Aplana un array de 2d a una de 1d | link |
array = np.transpose(other) </br> array.T |
Transpone el array | link |
Matemáticas ¶
Operaciones aritméticas ¶
Operador | Descripción | Documentación |
---|---|---|
np.add(x,y) |
Adición | link |
np.substract(x,y) |
Substracción | link |
np.divide(x,y) |
División | link |
np.multiply(x,y) |
Multiplicación | link |
np.sqrt(x) |
Raíz cuadrada | link |
np.sin(x) |
Seno a nivel elemento | link |
np.cos(x) |
Coseno a nivel elemento | link |
np.log(x) |
Logaritmo natural a nivel elementos | link |
np.dot(x,y) |
Producto escalar | link |
Recordar: Las operaciones con arrays de NumPy funcionan a nivel elemento.
Ejemplo ¶
# Si un array de 1d es sumada a otra de 2d, Numpy elije
# la array con dimensión más pequeña y la suma con la de
# dimensión más grande
a = np.array([1, 2, 3])
b = np.array([(1, 2, 3), (4, 5, 6)])
print(np.add(a, b))
# Utilizando operadores de comparación creará un array de tipo booleano.
z = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
c = z < 6
print(c)
Estadística básica ¶
Operador | Descripción | Documentación |
---|---|---|
array.mean() </br>np.mean(array) |
Media aritmética | link |
np.median(array) |
Mediana | link |
array.corrcoef() |
Coeficiente de correlación | link |
array.std(array) |
Desvío estándar | link |
Mas funciones¶
Operador | Descripción | Documentación |
---|---|---|
array.sum() |
Suma a nivel elementos | link |
array.min() |
Minimiza a nivel elementos | link |
array.max(axis=0) |
Máximo valor de un determinado eje | link |
array.cumsum(axis=0) |
Suma acumulada en un eje específico | link |
Slicing y Subsetting ¶
Operador | Descripción | Documentación |
---|---|---|
array[i] |
array 1d al índice i | link |
array[i,j] |
array 2d al index[i][j] | ver arriba |
array[i<4] |
índice booleano, ver Trucos | ver arriba |
array[0:3] |
Selecciona items de indice 0, 1 y 2 | ver arriba |
array[0:2,1] |
Selecciona items de filas 0 y 1 de la columna 1 | ver arriba |
array[:1] |
Selecciona items de fila 0 (igual a array[0:1, :]) | ver arriba |
array[1:2, :] |
Selecciona items de fila 1 | ver arriba |
array[1,...] |
Igual a array[1,:,:] | ver arriba |
array[ : :-1] |
Reversa el array |
ver arriba |
Ejemplos ¶
# Seleccionando elementos.
b = np.array([(1, 2, 3), (4, 5, 6)])
# El índice *antes* de la coma refiere a filas,
# el índice *después* de la coma refiere a columnas.
print(b[0:1, 2])
print(b[:len(b), 2])
print(b[0, :])
print(b[0, 2:])
print(b[:, 0])
c = np.array([(1, 2, 3), (4, 5, 6)])
d = c[1:2, 0:2]
print(d)
Trucos ¶
Esta es una lista de ejemplos en progreso. Si conocen un buen truco, no duden en comentar para que sea incluido en el tutorial.
# Truco de indices cuando trabajamos con 2 arrays
a = np.array([1,2,3,6,1,4,1])
b = np.array([5,6,7,8,3,1,2])
# Solo guardar a con indice dónde b == 1
other_a = a[b == 1]
print(other_a)
# Guardar todos las las posiciones excepto aquella en que b==1
other_other_a = a[b != 1]
print(other_other_a)
# Otra forma de trabajar con índices
x = np.array([4,6,8,1,2,6,9])
y = x > 5
print(x[y])
# Más compacta
x = np.array([1, 2, 3, 4, 4, 35, 212, 5, 5, 6])
print(x[x < 5])