NumPy (Numerical Python) é unha librería para Python que se utiliza para traballar con matrices e grandes cantidades de datos numéricos de maneira eficiente. É fundamental para moitas aplicacións de IA porque nos permite realizar cálculos matemáticos complexos de maneira moi rápida e sinxela.
Unha matriz é como unha táboa de números organizada en filas e columnas. Imaxinemos unha folla de cálculo : cada cela contén un número e están organizadas en filas e columnas. As matrices son útiles en moitas áreas da IA porque nos permiten organizar e manipular datos de maneira eficiente.
Actividades de aprendizaxe
Actividade 1: Crear e manipular matrices
◦ Obxectivo: Aprender a crear matrices e realizar operacións básicas con NumPy. ◦ Instrución: Crear unha matriz de números enteiros e calcular a suma, o produto, o valor mínimo e máximo.
O programa inclúe explicacións detalladas nos comentarios para que comprendas cada paso.
Executandoo en Colab, podes probar a crear unha matriz.
Non te preocupes por comprender o programa totalmente, só de entender o que fai.
Podes xogar cos datos da matriz de números cambiando o valor ou a float.
Explicación dos métodos de NumPy:
np.array([...]): Crea un array de números enteiros.
np.sum(numeros): Calcula a suma de todos os valores do array.
np.prod(numeros): Multiplica todos os valores do array para obter o produto total.
np.min(numeros): Identifica o valor máis pequeno dentro do array.
np.max(numeros): Identifica o valor máis grande dentro do array.
Este código é útil para operacións matemáticas básicas sobre listas de números. NumPy é unha biblioteca moi eficiente para traballar con datos numéricos de grandes dimensións.
Posibles actividades adicionais:
Crear matrices con diferentes tipos de datos (flotantes, booleanos) e aplicar diferentes operacións (media, mediana, desviación estándar).
Código Python: Creación e manipulación dunha matriz
import numpy as np
# Crear unha matriz (array) de números enteiros
numeros = np.array([2, 3, 5, 7, 11, 13, 17])
# Calcular a suma de todos os elementos do array
suma = np.sum(numeros)
print("Suma:", suma)
# Calcular o produto de todos os elementos do array
producto = np.prod(numeros)
print("Produto:", producto)
# Atopar o valor mínimo e máximo dentro do array
minimo = np.min(numeros) # Valor mínimo
maximo = np.max(numeros) # Valor máximo
print("Mínimo:", minimo)
print("Máximo:", maximo)
Actividade 2: Operacións entre matrices
◦ Obxectivo: Aprender a realizar operacións matemáticas entre matrices. ◦ Instrución: Crear dous matrices e realizar operacións de suma, resta, multiplicación e división.
O programa inclúe explicacións detalladas nos comentarios para que comprendas cada paso.
Executandoo en Colab, podes probar a realizar distintas operacións con matrices.
Non te preocupes por comprender o programa totalmente, só de entender o que fai.
Podes xogar coa instrución que xenera os datos e cambialos.
Explicación dos métodos de NumPy:
matriz1 + matriz2: Realiza a suma entre os elementos das matrices.
matriz1 - matriz2: Realiza a resta elemento por elemento.
matriz1 * matriz2: Multiplica os elementos correspondentes das matrices.
matriz1 / matriz2: Divide os elementos correspondentes das matrices.
Neste caso, cada operación faise de xeito elemento a elemento, o que significa que cada posición no array de saída corresponde á operación entre os valores da mesma posición en matriz1 e matriz2.
Posibles actividades adicionais:
Experimentar con matrices de diferentes tamaños e aplicar operacións de punto (dot product) e produto cruzado (cros product).
Código Python: Operacións con matrices
import numpy as np
# Crear dúas matrices (arrays) de números enteiros
matriz1 = np.array([1, 2, 3])
matriz2 = np.array([4, 5, 6])
# Suma das matrices elemento a elemento
suma = matriz1 + matriz2
print("Suma:", suma)
# Resta das matrices elemento a elemento
resta = matriz1 - matriz2
print("Resta:", resta)
# Multiplicación das matrices elemento a elemento
multiplicacion = matriz1 * matriz2
print("Multiplicación:", multiplicacion)
# División das matrices elemento a elemento
division = matriz1 / matriz2
print("División:", division)
Actividade 3: Crear matrices multidimensionales
◦ Obxectivo: Comprender como crear e manipular matrices de varias dimensións. ◦ Instrución: Crear unha matriz 2x3 e realizar operacións básicas como transposición e reshape.
O programa inclúe explicacións detalladas nos comentarios para que comprendas cada paso.
Executandoo en Colab, podes probar a realizar redimensionamento e transposición de matrices.
Non te preocupes por comprender o programa totalmente, só de entender o que fai.
Podes xogar coa instrución de datos e comprobar os cambios.
Explicación dos métodos de NumPy:
np.transpose(matriz): Intercambia filas e columnas, convertendo unha matriz de tamaño (2x3) nunha matriz de tamaño (3x2).
np.reshape(matriz, (1,6)): Cambia a forma da matriz sen alterar os seus valores, reorganizándoa nunha única fila con 6 elementos.
Estes métodos de NumPy son moi útiles para a manipulación de datos e a preparación de matrices para cálculos matemáticos máis avanzados.
Posibles actividades adicionais:
Crear matrices 3D e aplicar operacións de indexación e slicing para extraer submatrices.
A función reshape permite cambiar a forma dun array sen cambiar os seus datos. É importante asegurarse de que o número total de elementos permaneza constante. Por exemplo, un array de 12 elementos pode ser remodelado en unha matriz de 3x4, 4x3, 2x6, etc., pero non en unha matriz de 5x3.
Unha matriz trasposta é o resultado de cambiar a disposición de unha matriz, intercambiando as súas filas por columnas e viceversa.
Código Python: Matrices de varias dimensións
import numpy as np
# Crear unha matriz 2x3
matriz = np.array([[1, 2, 3], [4, 5, 6]])
# Transposición da matriz (intercambia filas e columnas)
transposta = np.transpose(matriz)
print("Matriz transposta:")
print(transposta)
# Cambio da forma (reshape) da matriz
# Neste caso, reorganiza os elementos nunha matriz de 1 fila e 6 columnas
reshaped = np.reshape(matriz, (1, 6)) # O número total de elementos debe coincidir (2x3 = 6)
print("Matriz transformada:")
print(reshaped)
Actividade 4: Traballar con funcións universais (ufuncs)
◦ Obxectivo: Aprender a utilizar funcións universais para operacións element-wise. ◦ Instrución: Aplicar funcións matemáticas como seno, coseno e exponencial a unha matriz de números.
O programa inclúe explicacións detalladas nos comentarios para que comprendas cada paso.
Executandoo en Colab, podes probar distintas funcións matemáticas.
Non te preocupes por comprender o programa totalmente, só de entender o que fai.
Podes xogar coa instrución de datos e cambialos.
Explicación dos métodos de NumPy:
np.sin(numeros): Calcula o valor do seno para cada elemento da matriz.
np.cos(numeros): Calcula o valor do coseno para cada elemento da matriz.
np.exp(numeros): Aplica a función exponencial exe^x a cada elemento.
Este código é útil para cálculos matemáticos relacionados con trigonometría e análise de funcións exponenciais.
Posibles actividades adicionais:
Experimentar con outras funcións universais como logaritmo, raíz cadrada, etc.
Elemento por elemento
Código Python: Funcións matemáticas
import numpy as np
# Crear unha matriz de números que representan ángulos en radianos
numeros = np.array([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi])
# Aplicar a función seno a cada elemento da matriz
seno = np.sin(numeros)
print("Seno:", seno)
# Aplicar a función coseno a cada elemento da matriz
coseno = np.cos(numeros)
print("Coseno:", coseno)
# Aplicar a función exponencial a cada elemento da matriz
exponencial = np.exp(numeros)
print("Exponencial:", exponencial)
Actividade 5: Operacións avanzadas con NumPy
◦ Obxectivo: Aprender a utilizar técnicas avanzadas de NumPy como a xeración de números aleatorios e a manipulación de datos. ◦ Instrución: Crear unha matriz de números aleatorios e aplicar técnicas de filtrado e ordenación.
O programa inclúe explicacións detalladas nos comentarios para que comprendas cada paso.
Executandoo en Colab, podes probar a xerar e filtrar datos.
Non te preocupes por comprender o programa totalmente, só de entender o que fai.
Podes xogar coa instrución random e aleatorios>0.5 cambiando os valores .
Explicación dos métodos de NumPy:
np.random.rand(5,5): Crea unha matriz de tamaño 5x5 con valores aleatorios entre 0 e 1.
aleatorios[aleatorios > 0.5]: Filtra e devolve os elementos que son maiores que 0.5.
np.sort(aleatorios, axis=None): Ordena todos os valores da matriz como un único array en orde crecente.
Posibles actividades adicionais:
Xerar diferentes tipos de distribucións aleatorias (normal, binomial) e aplicar técnicas de agrupamento e redución.
Código Python: Filtrado de datos aleatorios
import numpy as np
# Crear unha matriz de números aleatorios de tamaño 5x5
aleatorios = np.random.rand(5, 5)
print("Matriz de números aleatorios:")
print(aleatorios)
# Filtrar os números maiores que 0.5 dentro da matriz
filtrados = aleatorios[aleatorios > 0.5]
print("Números filtrados maiores que 0.5:")
print(filtrados)
# Ordenar todos os elementos da matriz en orde crecente
ordenados = np.sort(aleatorios, axis=None)
print("Matriz ordenada:")
print(ordenados)
Actividade 6: Slicing
Que é ?
O slicing é unha técnica para seleccionar partes dun array ou matriz en NumPy sen necesidade de recorrer a bucles. Permite extraer elementos específicos, filas, columnas ou rangos.
Como se fai con NumPy?
Utilízase a sintaxe [inicio:fin], onde:
inicio é a posición inicial.
fin é a posición final (non se inclúe).
Se queremos saltos entre elementos, engadimos [inicio:fin:paso].
Exemplo
Proba o seguinte código, cambia os límites do slicing en cada execución.
Código Python: Exemplos de slicing
#Slicing inclúe inicio pero non fin
import numpy as np
# Creamos un array
numeros = np.array([10, 20, 30, 40, 50])
print(numeros[1:4]) # [20, 30, 40] → Comeza en índice 1 e remata en 4 (sen incluílo)
print(numeros[:3]) # [10, 20, 30] → Comeza no inicio ata índice 3(sen incluílo)
print(numeros[::2]) # [10, 30, 50] → Comeza no inicio ata o final.Salta de 2 en 2
# Para matrices:
matriz = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matriz)
print(matriz[:2, 1:]) # Filas 0-1 e columnas 1 en diante