Infor Numpy 2
Infor Numpy 2
vectorial y matricial.
DIAPOSITIVA 1
1. Introducción
Numpy (Numerical Python) es una biblioteca que implementa funcionalidades
relacionadas con el álgebra vectorial y matricial.
import numpy
Uso de la biblioteca: import numpy as np
import numpy as np
vector = np.array([1,2,3,4])
print(vector) # [1 2 3 4 5]
Tipo de dato básico de Numpy: ndarray print(type(vector)) # <class 'numpy.ndarray'>
DIAPOSITIVA 3
2. Creación
Arrays en general:
• np.array(object, dtype=None): devuelve un array “similar” al del objeto “vectorizable”
object. Los elementos son del tipo especificado (o lo heredan de object).
• np.full(shape, fillValue, dtype=None): devuelve un array del tamaño shape lleno de
fillValue. Los elementos son del tipo especificado (o lo heredan de fillValue).
• np.full_like(a, fillValue, dtype=None): devuelve un array del mismo tamaño que a
lleno de fillValue. Los elementos son del tipo especificado (o lo heredan de a).
• np.ones(), np.ones_like(), np.zeros(), np.zeros_like() funcionan de forma similar a los
anteriores.
• np.fromfunction(fun, shape, dtype=<class 'float'>): devuelve un array del tamaño
shape lleno de los elementos resultantes de evaluar las coordenadas mediante la función fun.
Los elementos son de tipo float por defecto (dtype).
Vectores en general:
• np.arange([start, ]stop, [step, ]dtype=None): devuelve un array 1-D de números
ordenados entre start (incluido) y stop (no incluido) separados por una distancia step. Se
DEBEN usar para generar arrays de int.
• np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None):
devuelve un array de num valores equiespaciados entre start y stop. El valor inicial siempre
está incluido. El valor final esta incluido por defecto (endpoint). Puede devolver también el
espaciado entre los elementos como segundo miembro de una tupla de salida. Los elementos
son de tipo float por defecto (dtype).
DIAPOSITIVA 4
2. Creación
Matrices en general:
• np.eye(N, M=None, k=0, dtype=float): devuelve un array 2-D con 1s en la diagonal
y 0s en el resto de elementos. N es el número de filas, M es el número de columnas
(igual a N por defecto), k es un entero que determina la diagonal (superior +, inferior -)
y se puede especificar el tipo de los elementos (float por defecto).
• np.diag(v, k=0): si v es un array 2-D devuelve un array 1-D con los elementos de la
diagonal de v. Si v es un array 1-D devuelve un array 2-D con los elementos de v en
la diagonal. k es un entero que determina la diagonal (superior +, inferior -).
• np.meshgrid(*xi): devuelve una tupla de arrays. Cada uno de los arrays contiene las
coordenadas de una malla generada con las coordenadas de los arrays 1-D xi.
DIAPOSITIVA 5
3. Modificación
Acceso y modificación de los elementos Métodos de modificación:
mediante indexación numérica: • np.delete(arr, obj, axis=None): devuelve
una copia de arr (un clón) sin los
elementos cuya posición está especificada
por obj y axis. obj puede ser un int, una
tuple, o un slice.
• np.append(arr, values, axis=None):
devuelve una copia de arr con los
elementos especificados por values
insertados en la dimensión axis.
Métodos de concatenación: • np.insert(arr, obj, values, axis=None):
• np.vstack(tup): unión vertical. devuelve una copia de arr (un clón) con
• np.hstack(tup): unión horizontal.
los elementos especificados por values
insertados en las posiciones especificadas
• np.dstack(tup): unión según 3ª dim.
por obj y axis. obj puede ser un int, una
• np.concatenate(tup, axis=0): une tuple, o un slice.
un conjunto de arrays (tup) según la
• np.reshape(a, newshape): devuelve un
dimensión especificada por axis.
array con los elementos de a y el tamaño
alterado por newshape (que, normamelte,
Métodos de separación. es una tupla de enteros).
DIAPOSITIVA 6
4. Operadores
m1 = np.array([ [1,2] , [3,4] ])
m2 = np.array([ [5,6] , [7,8] ])
m = np.array([ [1,2] , [3,4] , [5,6] ])
v1 = np.array([1,2])
v2 = np.array([[3],[4],[5]])
DIAPOSITIVA 9
5. Otras tareas
Copia de arrays: v1 = np.ones(5) v1 = np.ones(5)
• Copia superficial: no crea nuevos objetos. Genera un v2 = v1
print(v1,"==",v2)
v2 = v1.copy()
print(v1,"==",v2)
nuevo nombre (alias) para los datos contenidos en un v1[3] = 0 v1[3] = 0
objeto previamente generado. print(v1,"==",v2) print(v1,"!=",v2)
• Copia profunda: crea un nuevo objeto. Genera un array [1. 1. 1. 1. 1.] == [1. 1. 1. 1. 1.]
nuevo (clon) con el mismo contenido que el array original. [1. 1. 1. 0. 1.] == [1. 1. 1. 0. 1.]
[1. 1. 1. 1. 1.] == [1. 1. 1. 1. 1.]
[1. 1. 1. 0. 1.] != [1. 1. 1. 1. 1.]
Métodos de funciones elementales:
• np.cos(x): devuelve un array cuyos elementos son el coseno de los elementos del array x.
• np.sin(x): devuelve un array cuyos elementos son el seno de los elementos del array x.
• np.sqrt(x): devuelve un array cuyos elementos son la raíz de los elementos del array x.
• np.log(x): … cuyos elementos son el logaritmo natural de los elementos del array x.
• np.exp(x): … cuyos elementos son la exponencial natural de los elementos del array x.
• np.cross(v1,v2): devuelve el producto vectorial.
Métodos de operaciones algebraicas lineales:
• np.dot(v1,v2): devuelve el producto escalar.
• np.matmul(m1,m2): devuelve el producto matricial.
Otros métodos de utilidad:
• np.transpose(m1), np.ceil(x), np.floor(x),
• np.max(x[,axis=]), np.min(x[,axis=])
• np.sum(x[,axis=]), np.prod(x[,axis=])
DIAPOSITIVA 10
Ej. 1 - Escribe una función de nombre matMultList(A,B) que reciba dos matrices como listas de listas de
números enteros. La función comprobará que las dimensiones son correctas (consideramos que todos
los elementos de la lista A son listas de la misma longitud. Lo mismo ocurrirá en B) y permiten realizar el
producto matricial. Si la multiplicación es posible devolverá la matriz producto como una lista de listas. Si
no lo es devolverá una lista vacía e imprimirá por pantalla un mensaje de error.
Ej. 2 - Escribe una función de nombre matMultArray(A,B) que reciba dos matrices como arrays de
números enteros. La función comprobará que las dimensiones son correctas y permiten realizar el
producto matricial. Si la multiplicación es posible devolverá la matriz producto. Si no lo es imprimirá por
pantalla un mensaje de error.
Ej. 3 - Crea una función sumaDimensiones(𝐴,𝑝) que reciba como argumento una matriz 𝐴 y un entero p.
Si p = 0 devolverá un vector del tamaño el número de columnas que tenga 𝐴 y cuyos elementos serán la
suma de la columna correspondiente de A. Si p = 1 devolverá un vector del tamaño el número de filas
que tenga 𝐴 y cuyos elementos serán la suma de la fila correspondiente de A.
Ej. 4 - Crea una función producto(𝐴,𝑣,𝑝) que reciba como argumento una matriz 𝐴, un vector 𝑣 y un entero
p. Si p = 0 devolverá el vector producto 𝐴v. Si p = 1 devolverá el vector producto 𝑣 𝑇 𝐴. En ambos casos
comprobará que las dimensiones son adecuadas.
Ej. 5 - Crea una función traspuesta(A) que reciba como argumento una matriz 𝐴 y devuelva la matriz
traspuesta.
Ej. 6 - Crea una función, vectorEjemplo(n), que devuelva el vector de tamaño n cuyos elementos sean
−1 𝑖
𝑣 𝑖 = . Crea una función matrizEjemplo(n), que devuelva la matriz de tamaño nxn cuyos elementos
2𝑖−1
𝑖 𝑗−1
sean 𝐴 𝑖, 𝑗 = .
𝑁
Ej. 7 – Comprueba el comportamiento de todas las rutinas implementadas en los ejercicios anteriores.
DIAPOSITIVA 11
6. Bibliografía
Moodle: https://moodle.upm.es/titulaciones/oficiales/login/login.php
Introducción a Numpy
Documentación:
• Python
• Instalación de Numpy, Biblioteca Numpy, Guía de usuario Numpy
Cheatsheets:
• Python
• Numpy
DIAPOSITIVA 12