Tiza Las materias del CBC
Practicar →

Pensamiento Computacional (090) · Unidad 6 — Bibliotecas de Python

Bibliotecas y NumPy

Una biblioteca es código que ya está hecho. NumPy trae arrays, que se parecen a las listas pero operan sobre todos los elementos a la vez.

Practicar este tema →7 ejercicios que te corrigen paso a paso · gratis, sin cuenta

La explicación

Importar

import numpy                 → numpy.array(...)
import numpy as np          → np.array(...)
from numpy import array   → array(...)

La segunda forma es la convención universal. np para NumPy y pd para Pandas se escriben así en todos lados; conviene respetarlo para que tu código se lea como el de todo el mundo.

Arrays: parecen listas, pero no lo son

import numpy as np
a = np.array([1, 2, 3])

Se indexa y se recorre igual. La diferencia está en las operaciones:

np.array([1,2,3]) * 2   → [2 4 6]         multiplica cada uno
[1,2,3] * 2             → [1,2,3,1,2,3]   repite la lista
np.array([1,2]) + np.array([3,4])  → [4 6]        suma posición a posición
[1,2] + [3,4]                     → [1,2,3,4]   pega una atrás de otra
Este contraste es lo más importante del tema. El mismo + y el mismo * hacen cosas distintas según qué tengas. Un programa que "da cualquier cosa" con números suele ser una lista donde había que usar un array, o al revés.

Operar sin ciclo

Con listas, duplicar cada elemento pide un for. Con arrays no:

# lista
dobles = []
for n in numeros:
    dobles.append(n * 2)

# array
dobles = numeros * 2

Eso se llama vectorizar, y además de ser más corto es muchísimo más rápido cuando hay muchos datos, porque la cuenta se hace por fuera de Python.

Funciones útiles

a.sum()     a.mean()     a.max()     a.min()
np.arange(0, 10, 2)   como range, pero array
np.zeros(5)                cinco ceros
Ejemplo resuelto

Tenés las temperaturas de la semana en grados Celsius y las querés en Fahrenheit. ¿Cuál es la diferencia entre hacerlo con lista y con array?

La fórmula es F = C × 9/5 + 32.

Con lista, hace falta un ciclo:

celsius = [20, 25, 18]
fahrenheit = []
for c in celsius:
    fahrenheit.append(c * 9/5 + 32)

Con array, es una línea:

import numpy as np
celsius = np.array([20, 25, 18])
fahrenheit = celsius * 9/5 + 32

Las dos dan [68, 77, 64.4].

Fijate que en la versión con array, celsius * 9/5 multiplica cada temperatura, y + 32 le suma 32 a cada resultado. Si celsius fuera una lista común, esa misma línea daría cualquier cosa: lista * 9 repetiría la lista nueve veces y después /5 tiraría TypeError.

Cuándo usar cada una. Para pocos datos y cosas variadas, lista. Para muchos números sobre los que hacés cuentas, array. La unidad 6 entera va en esa dirección: herramientas para cuando los datos son muchos.

Control: 20 °C tienen que dar 68 °F, que es el dato que todos conocen. Si te da otra cosa, revisá el orden de las operaciones.

Dónde se cae la mayoría

Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.

Practicar Bibliotecas y NumPy →

Ver todos los temas de Pensamiento Computacional