¡Esta es una revisión vieja del documento!
Tabla de Contenidos
NumPy
Se suele cargar en Python con el alias np:
import numpy as np
Arrays
Podemos convertir una lista de Python en un array/matriz de NumPy:
mylist = [1, 2, 3] myarray = np.array(mylist) type(myarray) # Devolverá: numpy.ndarray
Métodos
arange
Genera un array:
np.arange(0, 3) # array([0, 1, 2, 3]) # Genera un array del 0 al 10, pero con saltos de 2 np.arange(0, 10, 2) # array([0, 2, 4, 6, 8])
zeros
Genera arrays de ceros. Permite indicar las dimensiones del array:
np.zeros(shape=(3,5)) # resultado: #array([[0., 0., 0., 0., 0.], # [0., 0., 0., 0., 0.], # [0., 0., 0., 0., 0.]])
Por defecto, el método zeros() crea números decimales (float).
ones
Genera arrays de unos. Permite indicar las dimensiones del array:
np.ones(shape=(3,5)) # resultado: #array([[1., 1., 1., 1., 1.], # [1., 1., 1., 1., 1.], # [1., 1., 1., 1., 1.]])
Por defecto, el método ones() crea números decimales (float).
max
Devuelve el valor más alto de un array:
# arr = array([ 4, 63, 40, 60, 92, 64, 5, 12, 93, 40]) arr.max() # 93
min
Devuelve el valor más pequeño de un array:
# arr = array([ 4, 63, 40, 60, 92, 64, 5, 12, 93, 40]) arr.min() # 4
argmax
Devuelve la posición del elemento más grande del array
# arr = array([ 4, 63, 40, 60, 92, 64, 5, 12, 93, 40]) arr.argmax # 8
argmin
Devuelve la posición del elemento más grande del array
# arr = array([ 4, 63, 40, 60, 92, 64, 5, 12, 93, 40]) arr.argmin # 0
mean
Calcula el valor medio de un array
# arr = array([ 4, 63, 40, 60, 92, 64, 5, 12, 93, 40]) arr.mean() # 47.3
reshape
Cambiar las dimensiones de un array
arr = np.random.randint(0, 100, 10) # array([95, 11, 81, 70, 63, 87, 75, 9, 77, 40]) arr.reshape((5, 2)) # array([[95, 11], # [81, 70], # [63, 87], # [75, 9], # [77, 40]])
Las nuevas dimensiones tiene que ser lógicas. Si tenemos un array con 10 elementos, no podemos convertirlo en un array de 3 filas y 2 columnas, por ejemplo.
Podemos combinar métodos:
# Crear una matriz de 10 filas y 10 columnas con los 100 primeros números (del 0 al 99) mat = np.arange(0, 100).reshape(10,10)
copy
Realiza una copia de un array
mat = np.arange(0, 100).reshape(10, 10) matnew = mat.copy()
Selección
Para coger algún elemento del array, nos referimos a su posición.
mat = np.arange(0, 100).reshape(10, 10) # Elemento que ocupa la posición 0, 10 (fila, columna): mat[0,10]
Para coger todos los elementos de una fila o columna utilizamos el slicing típico de Python:
# Todos los valores de las filas, pero de la columna que ocupa la posición 1 mat[:,1] # Todos los valores de las columnas para la fila 2: mat[2, :] # Porción: mat[0:3,0,3]
Números aleatorios
# Semilla para la aleatoriedad np.random.seed(101) # Creamos un array de 10 números entre el 0 y el 100 arr = np.random.randint(0, 100, 10)
Imágenes
Por sí mismo, NumPy no es capaz de manejar imágenes sino que se apoya en el módulo PIL (biblioteca pillow, Python Imaging Library)
import numpy as np from PIL import Image # Para poder ver las imágenes en un Notebook de Jupyter import matplotlib.pyplot as plt %matplotlib inline pic = Image.open('ruta/imagen.png') # Si queremos ver la imagen en Jupyter pic type(pic) # PIL.PngImagePlugin.PngImageFile
Convertimos la imagen a un array de NumPy:
pic_arr = np.asarray(pic) type(pic_array) # numpy.ndarray pic_arr.shape # (1080,1920, 3) # Mostrar el array como imagen: plt.imshow(pic_arr)
