NumPy, del inglés Numerical Python, es una de las librerías más útiles en Data Science.

NumPy está creada para generar operaciones lógicas-matemáticas. La librería se basa en la agrupación de datos en Arrays (arreglos o matrices). Aquí verás cómo crearlos, manejarlos y accesarlos de manera eficiente. Los siguientes ejemplos de uso han sido ejecutados en Jupiter Notebooks, y se asume que la librería ya ha sido instalada. Si no sabes cómo realizarlo, ejecuta en tu CMD (command prompt) el código:
conda install numpy
NumPy Arrays
Los Arrays es una forma simple de contener valores del MISMO TIPO. Los Arrays pueden ser de 1-dimensión (1D, líneas o vectores), o de más de 2-dimensiones ( 2D…nD, matrices). Ahora importamos Numpy en Jupiter notebook. Sigue los # donde comentaré acerca del proceso que estamos por ejecutar.
import numpy as np
# Primero crearemos una Python List común
pythonList = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Ahora crearemos un Numpy Array de 1D
numpyArr = np.array(pythonList)
# En adelante, este código nos permitirá ver el Array
numpyArr
Ya que sabemos qué es un Numpy Array 1D, creemos uno de más dimensiones, 2D. El siguiente código mostrará un matriz de 4 x 4 datos (4 filas x 4 columnas):
# 2D Numpy Array
pythonList_2 = [[1,3,9,2], [5,4,1,3], [4,5,7,1], [2,3,6,8]]
numpyArr_2 = np.array(pythonList_2)
numpyArr_2
Usemos la Función «arange()»
Esta función crea Arrays aleatorios. Este tiene tres argumentos arange(#1,#2,#3). El argumento #1 es el número desde que cifra queremos crear el Array, mientras que el #2, hasta qué cifra. El argumento #3 genera modifica el código generar números aleatorios cada N cifras.
# Numpy genera un Array automático
# con valores de 0 a 9
# únicamente ingresando el valor 10
# estos Arrays siempre inician en 0
numpyArr = np.arange(10)
numpyArr
# Ahora probemos con todos los argumentos
# creemos uno con valores de 4 a 14 cada 2 cifras
numpyArr = np.arange(4,15,2)
numpyArr
# SI!!! recuerda, el código se detiene
# en la cifra anterior a la que colocas
Adicionalmente podemos modificar el tipo de dato. Recordemos, existen dos tipos de datos numéricos: valores enteros (integers) y decimales o flotantes (floats). Arange() nos generará siempre valores enteros, pero podemos pedirle que nos entregue Arrays de valores flotantes incluyendo un cuarto argumento dtype= :
# Por defecto dtype es int
# esto nos devolverá un Array como los
# los ya vistos
numpyArr_flo = arange(2,11,2, dtype=int)
numpyArr_flo
# Pero podemos cambiarlos a float
numpyArr_int = np.arange(0,1,5, dtype=float)
numpyArr_int
Puedes generar Array 1D con sólo unos o sólo ceros:
zerosArr = np.zeros(10)
zerosArr
onesArr = np.ones(10)
onesArr
Incluso puedes crear Array 2D, 3D, etc y seleccionar el tipo de dato. Los Arrays 2D, 3D, en adelante deberán argumentarse como una lista dentro del código que ya conocemos:
numpyArr_2D = np.zeros((3,5), dtype=float)
numpyArr_2D
# Pensemos en este Array como una matriz cúbica
# de 3 x 3 x 3
numpyArr_3D = np.zeros([3,3,3], dtype=float)
numpyArr_3D
Arrays Aleatorios con Distribución Normal ramdom.random()
Crear Array aleatorios es muy sencillo. Creemos un Array de 3 x 3 entre 0 y 1.
aleatorio = np.random.random((3, 3))
aleatorio
Arrays Aleatorios con Promedio y Desviación Estándar Determinado ramdom.normal()
Es muy útil para ciertos estudios en biología, generar modelos basados datos con parámetros estadísticos conocidos, adicionalmente de la distribución que estos datos presentan. Numpy nos lo facilita con una sola línea de código. En la forma es random.normal(#1,#2,(#3)), el argumento #1 es el promedio, #2 la desviación estándar, #3 es la dimensionalidad del Array 2 x 2:
normal = np.random.normal(0, 1, (3, 3))
normal
Arrays espaciados uniformemente
La función es linspace(#1, #2, #3), cuyos argumentos son #1 cifra de inicio, #2 cifra final y #3 el número de valores que querrás obtener dentro del rango especificado por #1 y #2.
linArr = np.linspace(0, 1, 5)
Matrices de identidad
Las matrices de identidad son muy útiles cuando se trata de álgebras lineales. Por lo general, es una matriz cuadrada bidimensional. Esto significa que el número de fila es igual al número de columna. Una cosa única a tener en cuenta sobre la matriz de identidad es que las diagonales son 1 y todo lo demás es 0. Las matrices de identidad usualmente toman un solo argumento. Aquí está cómo crear uno.
# el único argumento determina el número de
# columnas y filas de la matriz
identArr = np.eye(5)
identArr
Transformar matrices 1D a 2D
Primero veamos la función random.randn(#1), que genera un array 1D de datos aleatorios con distribución normal centrados en cero. El argumento #1 es la cantidad de números aleatorios que deseamos generar:
randnArr = np.random.randn(15)
randnArr
Ahora transformemos randnArr de 1D a 2D usando la función reshape(). Esta función sólo puede crear un array 2D con un número de filas y columnas que multiplicados den como resultado el número original de datos guardados en el 1D. Teniendo 15 datos, podemos crear una matriz 1 x 15 o 3 x 5. Creemos la segunda:
arr.reshape(5,5)

Deja un comentario