Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:modulos:numpy

¡Esta es una revisión vieja del documento!


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
 
# (1280,720, 3)
 
# Mostrar el array como imagen:
plt.imshow(pic_arr)
informatica/programacion/python/modulos/numpy.1607524592.txt.gz · Última modificación: por tempwin