title

Contributors:

Librería fundamental sobre la cual se construye todo el ecosistema científico y de análisis de datos en Python.

Numpy básicamente ofrece:

Python está organizado en módulos que son archivos con extensión .py que contienen funciones, variables y otros objetos.

Y en paquetes o bibliotecas, que son conjuntos de módulos. Cuando queremos utilizar objetos que están definidos en un módulo tenemos que importarlo.


Ejemplo 1 - Gráfica simple

Ejemplo 2 - ¿Por qué usar arrays?

Motivo: Eficiencia

Ejemplo:

$c_{ij} = a_{ij} + b{ij}$

¡1000 veces más rápido! Se hace fundamental vectorizar las operaciones y aprovechar al máximo la velocidad de NumPy.

Constantes y funciones universales

Estas funciones operan sobre números y sobre arrays.

¿Qué es exactamente un array?

Un array de NumPy es una colección de N elementos, igual que una secuencia en Python (por ejemplo, una lista). Tiene las mismas propiedades que una secuencia y algunas más. Para crear un array, la forma más directa es pasarle una secuencia a la función np.array

Los arrays de NumPy son homogéneos, es decir, todos sus elementos son del mismo tipo. Si le pasamos a np.array una secuencia con objetos diferentes, promocionará todos al tipo con más información. Para acceder al tipo del array, podemos usar la función dtype

NumPy intentará automáticamente construir un array con el tipo adecuado teniendo en cuenta los datos de entrada, aunque nosotros podemos forzarlo.

También podemos convertir un array de un tipo a otro utilizando el método .astype

Atributos y funciones de arrays

Una vez se ha creado un array es posible acceder a información sobre su estado.

Creación de arrays

1-D:

2-D, 3-D, ...

Funciones para crear arrays

En la práctica, rara vez creamos los arrays pasando los elementos de uno en uno...

Separación equidistante

Especificando el número de elementos

Otros arrays comunes

Números Aleatorios

Las imágenes tambien son arrays!

Indexado de arrays

Una de las herramientas mas importantes a la hora de trabajar con arrays es el indexado. Consiste en seleccionar elementos aislados o secciones de un array. Nosotros vamos a ver la indexación básica, pero existen técnica de indexación avanzada que convierten los arrays en herramientas potentísimas.

1-D Arrays

Para arrays multidimensionales, los índices son tuplas de enteros según las dimensiones del array.

En 2D la primera dimensión corresponde a las filas, la segunda a columnas

No solo podemos recuperar un elemento aislado, sino tambien porciones del array, utilizando la sintaxis [<inicio>:<final>:<salto>]

Obtener las dos filas de la mitad

Obtener las dos columnas de la mitad

Operaciones con arrays

Elemento por elemento

Toda la aritmética funciona elemento por elemento

Esto NO es multiplicación de matrices

(para multiplicación de matrices está la función np.malmut, y para producto punto entre vectores np.dot)

Otras operaciones

Comparar arrays

Podemos usar estas comparaciones como una mascara para modificar y acceder a los valores que cumplan la condición.

Funciones universales

Reducciones básicas

1-D arrays

Arrays multidimensionales

Otras reducciones

Funciona de igual manera con el axis y en múltiples dimensiones.

Ejercicios

Ejercicio 1.

  1. Crear un array z1 de 3x4 lleno de ceros de tipo entero.
  2. Crear un array z2 de 3x4 lleno de ceros salvo la primera fila que serán todo unos.
  3. Crear un array z3 de 3x4 lleno de ceros salvo la última fila que será el rango entre 5 y 8

Ejercicio 2.

  1. Crea un vector de 10 elementos, siendo los impares unos y los pares doses.
  2. Crea un tablero de ajedrez, con unos en las casillas negras y ceros en las blancas.

Puede mostrar el tablero de ajedrez usando plt.imshow(array)

Ejercicio 3.

  1. Crea una matriz aleatoria 5x5 y halla los valores mínimo y máximo.
  2. Normaliza esa matriz entre 0 y 1

Broadcasting

Las operaciones básicas (suma, resta, etc.) se hacen elemento por elemento y funciona en arrays de diferente tamaño.

La imagen siguiente da un ejemplo de broadcasting

Manipulación de formas

Colapsar

Reducir una matriz de múltiples dimensiones y la colapsa a una dimensión.

Reformar

La operación inversa a colapsar.

Manejo de Archivos

Tablas

Demos una mirada al archivo /data/populations.txt

year hare lynx carrot
1900 30000 4000 48300
1901 47200 6100 48200
1902 70200 9800 41500
1903 77400 35200 38200

Ejercicio:

Genere un gráfico para observar el cambio en la población de liebres y de linces a lo largo de los años

Formato Numpy

Numpy tiene su propio formato binario.

Resumen

Análisis de Vinos

Usando los resultados de un análisis químico de vinos obtenidos de la misma región en Italia pero de tres diferentes cultivos. Examine el archivo data/wine.csv.

Los atributos del dataset son:

  1. Wine (Class)
  2. Alcohol
  3. Malic acid
  4. Ash
  5. Alcalinity of ash
  6. Magnesium
  7. Total phenols
  8. Flavanoids
  9. Nonflavanoid phenols
  10. Proanthocyanins
  11. Color intensity
  12. Hue
  13. OD280/OD315 of diluted wines
  14. Proline

Truco:

Use np.set_printoptions(suppress=True, precision=3) para imprimer los datos de una manera mas legible.

Ejercicios

  1. Lea los datos desde la ruta data/wine.csv, use el parámetro delimiter=',' para valores separados por coma.
  2. Determine entre las 3 clases de vinos, cual tiene el mayor promedio de Alcohol.
  3. Un vino con concentración de ácido málico mayor a 3.5 se considera demasiado maduro, cuántos vinos tienen una concentración mayor?
  4. Usando el comando plt.hist(array) cree un histograma de ácido málico.
  5. Normalice entre [0,1] los datos de Alcohol e Intensidad de Color
  6. Usando el comando plt.scatter(array1, array2) cree un gráfico de dispersión de las dos columnas normalizadas.

Contributors: