Hoja de trucos de NumPy
El sistema NumPy es una extensión de cálculo numérico de código abierto para Python. Esta herramienta se puede utilizar para almacenar y procesar matrices grandes, lo cual es mucho más eficiente que la propia estructura de listas anidadas de Python (que también se puede utilizar para representar matrices).
Explicación
Usa arr para representar un objeto de matriz numpy.
Importar módulo
import numpy as npImportar/Exportar
| np.loadtxt(‘file.txt’) | Leer desde un archivo de texto |
| np.genfromtxt(‘file.csv’,delimiter=’,’) | Leer desde un archivo CSV |
| np.savetxt(‘file.txt’,arr,delimiter=’ ‘) | Escribir en un archivo de texto |
| np.savetxt(‘file.csv’,arr,delimiter=’,’) | Escribir en un archivo CSV |
Crear matriz
| np.array([1,2,3]) | Matriz 1D |
| np.array([(1,2,3),(4,5,6)]) | Matriz 2D |
| np.zeros(3) | Matriz 1D de longitud 3 con ceros |
| np.ones((3,4)) | Matriz 3x4 con todos los valores como 1 |
| np.eye(5) | Matriz de 5x5 con 1s en la diagonal y 0s en el resto (matriz identidad) |
| np.linspace(0,100,6) | Matriz de 6 valores espaciados uniformemente de 0 a 100 |
| np.arange(0,10,3) | Matriz de valores de 0 a menos de 10 con paso 3 (p. ej., [0,3,6,9]) |
| np.full((2,3),8) | Matriz de 2x3 con todos los valores como 8 |
| np.random.rand(4,5) | Matriz de 4x5 de flotantes aleatorios entre 0-1 |
| np.random.rand(6,7)*100 | Matriz de 6x7 de flotantes aleatorios entre 0-100 |
| np.random.randint(5,size=(2,3)) | Matriz de 2x3 con enteros aleatorios entre 0-4 |
Inspeccionar propiedades
| arr.size | Devuelve el número total de elementos de la matriz |
| arr.shape | Devuelve las dimensiones de la matriz |
| arr.dtype | Devuelve el tipo de elementos de la matriz |
| arr.astype(dtype) | Convierte el tipo de elemento de la matriz a dtype |
| arr.tolist() | Convierte la matriz a una lista |
| np.info(np.eye) | Ver la documentación de np.eye |
Copiar/Ordenar/Remodelar
| np.copy(arr) | Copia arr en una nueva memoria |
| arr.view(dtype) | Crea una vista de los elementos de arr con tipo dtype |
| arr.sort() | Ordena arr |
| arr.sort(axis=0) | Ordena un eje específico de arr |
| two_d_arr.flatten() | Aplana la matriz 2D a 1D |
| arr.T | Transpone arr (las filas se convierten en columnas y viceversa) |
| arr.reshape(3,4) | Cambia la forma de arr a 3 filas y 4 columnas sin cambiar los datos |
| arr.resize((5,6)) | Cambia la forma de arr a 5x6 y rellena los nuevos valores con 0 |
Añadir/Eliminar elementos
| np.append(arr,values) | Añade valores al final de arr |
| np.insert(arr,2,values) | Inserta valores en arr antes del índice 2 |
| np.delete(arr,3,axis=0) | Borra la fila en el índice 3 de arr |
| np.delete(arr,4,axis=1) | Borra la columna en el índice 4 de arr |
Combinar/Dividir
| np.concatenate((arr1,arr2),axis=0) | Añade arr2 como filas al final de arr1 |
| np.concatenate((arr1,arr2),axis=1) | Añade arr2 como columnas al final de arr1 |
| np.split(arr,3) | Divide arr en 3 submatrices |
| np.hsplit(arr,5) | Divide arr horizontalmente en el quinto índice |
Indexación/Slicing/Subconjuntos
| arr[5] | Devuelve el elemento en el índice 5 |
| arr[2,5] | Devuelve el elemento de la matriz 2D en el índice [2][5] |
| arr[1]=4 | Asigna al elemento de la matriz en el índice 1 el valor 4 |
| arr[1,3]=10 | Asigna al elemento de la matriz en el índice [1][3] el valor 10 |
| arr[0:3] | Devuelve los elementos en los índices 0,1,2 (En una matriz 2D: devuelve las filas 0,1,2) |
| arr[0:3,4] | Devuelve los elementos en las filas 0,1,2 en la columna 4 |
| arr[:2] | Devuelve los elementos en los índices 0,1 (En una matriz 2D: devuelve las filas 0,1) |
| arr[:,1] | Devuelve los elementos en el índice 1 en todas las filas |
| arr<5 | Devuelve una matriz con valores booleanos |
| (arr1<3) & (arr2>5) | Devuelve una matriz con valores booleanos |
| ~arr | Invierte una matriz booleana |
| arr[arr<5] | Devuelve los elementos de la matriz menores que 5 |
Matemáticas escalares
| np.add(arr,1) | Suma 1 a cada elemento de la matriz |
| np.subtract(arr,2) | Resta 2 a cada elemento de la matriz |
| np.multiply(arr,3) | Multiplica cada elemento de la matriz por 3 |
| np.divide(arr,4) | Divide cada elemento de la matriz por 4 (devuelve np.nan para la división por cero) |
| np.power(arr,5) | Eleva cada elemento de la matriz a la 5ª potencia |
Matemáticas vectoriales
| np.add(arr1,arr2) | Suma arr2 a arr1 elemento por elemento |
| np.subtract(arr1,arr2) | Resta arr2 de arr1 elemento por elemento |
| np.multiply(arr1,arr2) | Multiplica arr1 por arr2 elemento por elemento |
| np.divide(arr1,arr2) | Divide arr1 por arr2 elemento por elemento |
| np.power(arr1,arr2) | Eleva arr1 a la potencia de arr2 elemento por elemento |
| np.array_equal(arr1,arr2) | Devuelve True si las matrices tienen los mismos elementos y forma |
| np.sqrt(arr) | Raíz cuadrada de cada elemento de la matriz |
| np.sin(arr) | Seno de cada elemento de la matriz |
| np.log(arr) | Logaritmo natural de cada elemento de la matriz |
| np.abs(arr) | Valor absoluto de cada elemento de la matriz |
| np.ceil(arr) | Redondea hacia arriba al entero más cercano |
| np.floor(arr) | Redondea hacia abajo al entero más cercano |
| np.round(arr) | Redondea al entero más cercano |
Estadísticas
| np.mean(arr,axis=0) | Devuelve la media a lo largo de un eje específico |
| arr.sum() | Devuelve la suma de arr |
| arr.min() | Devuelve el valor mínimo de arr |
| arr.max(axis=0) | Devuelve el valor máximo de un eje específico |
| np.var(arr) | Devuelve la varianza de la matriz |
| np.std(arr,axis=1) | Devuelve la desviación estándar de un eje específico |
| arr.corrcoef() | Devuelve el coeficiente de correlación de la matriz |