0% encontró este documento útil (0 votos)
19 vistas11 páginas

Infor Numpy 2

Este documento describe el uso de la biblioteca Numpy en Python para trabajar con arrays multidimensionales, incluyendo la creación, modificación y operaciones con vectores y matrices. Se explican métodos para generar, acceder y modificar arrays así como los operadores y métodos equivalentes para realizar operaciones entre arrays.

Cargado por

claudianietohdez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas11 páginas

Infor Numpy 2

Este documento describe el uso de la biblioteca Numpy en Python para trabajar con arrays multidimensionales, incluyendo la creación, modificación y operaciones con vectores y matrices. Se explican métodos para generar, acceder y modificar arrays así como los operadores y métodos equivalentes para realizar operaciones entre arrays.

Cargado por

claudianietohdez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

05 – Numpy: arrays, álgebra

vectorial y matricial.

Colab.: Carlos Jesús Ruíz Sánchez [email protected]


Prof.: Álvaro Bello García [email protected]
Coord.: Javier de Vicente Buendia [email protected]

Dpto. Matemática Aplicada a la Ingeniería Aeroespacial (DMAIA)


Índice
1. Introducción.
• Numpy. Instalación. Uso del módulo.
• Tipo de dato ndarray. Atributos y métodos útiles.
2. Métodos del módulo para crear arrays.
• Arrays. Vectores. Matrices. Implementación de Random en Numpy.
3. Modificación de arrays.
• Acceso mediante indexación numérica.
• Métodos de modificación.
4. Operaciones con arrays.
• Operadores y Métodos equivalentes.
5. Otras tareas con arrays.
• Copias.
6. Bibliografía.

DIAPOSITIVA 1
1. Introducción
Numpy (Numerical Python) es una biblioteca que implementa funcionalidades
relacionadas con el álgebra vectorial y matricial.

En Anaconda, Numpy debería estar instalado: comprobar e instalar (si procede).

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'>

Es un contenedor estructurado y ordenado de tamaño fijo cuyos elementos son datos


del mismo tipo (normalmente int, float o bool). Este contenedor es capaz de almacenar
elementos de forma multidimensional. Implementa sus propios métodos y atributos.
DIAPOSITIVA 2
1. Introducción
La clase o tipo de dato np.ndarray tiene infinidad de atributos y métodos. Entre los
atributos más útiles encontramos: import numpy as np
a = np.array([ [1,2] , [3,4] ], np.int32)
• a.ndim: devuelve el número de dimensiones. print(a) # [[1 2] [3 4]]

• a.shape: devuelve una tupla con el tamaño de cada dimensión.


• a.size: devuelve el número total de elementos (el producto de los miembros de la
tupla que devuelve a.shape).
• a.dtype: devuelve el tipo de datos de los elementos (todos los elementos iguales).
• a.itemsize: el tamaño en bytes de cada elemento (todos los elementos iguales).
• a.nbytes: el total de bytes ocupados por los elementos (el producto del entero que
devuelve a.itemsize por el entero que devuelve a.size).
• a.flat: devuelve una variable iterable que permite recorrer todos los elementos como
si hubiese colapsado hasta convertirse en un array de una sola dimensión.

La mayoría de los métodos incluidos en la clase np.ndarray tienen una función


equivalente en el módulo Numpy. Algunos de los métodos que usaremos:
• a.copy(): devuelve una copia profunda (un clon).
• a.tofile(fid, sep=“”, format=“%s”): escribe la información de los elementos del array en
un archivo de texto.

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.

Implementación de funcionalidades de la biblioteca random:


• np.random.randint([low, ]high, size=None): devuelve un array de tamaño size
lleno de enteros aleatorios comprendidos entre low (0 por defecto) y high-1.
• np.random.rand(*di): devuelve un array con las dimensiones especificadas por los
enteros di. Los elementos del array son float uniformemente distribuidos en [0,1).
• np.random.uniform(low=0.0, high=1.0, size=None): devuelve un array tamaño size.
Los elementos del array son float uniformemente distribuidos en [low,high).

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]])

Operación Sintaxis Método equiv. Representación


Suma (element) m3 = m1 + m2 m3 = np.add(m1,m2) [[6,8] [10,12]]
Resta (element) m3 = m1 – m2 m3 = np.subtract(m1,m2) [[-4,-4] [-4,-4]]
Producto (element) m3 = m1 * m2 m3 = np.multiply(m1,m2) [[5,12] [21,32]]
División (element) m3 = m1/m2 m3 = np.divide(m1,m2) [[0.2,0.333] [0.429,0.5]]
Potencia (element) m3 = m1**m2 m3 = np.power(m1,m2) [[1,64] [2187,65536]]
Suma (escalar) m3 = m1 + 2.0 m3 = np.add(m1,2) [[3,4] [5,6]]
Resta (escalar) m3 = m1 – 2.0 m3 = np.subtract(m1,2) [[-1,0] [1,2]]
Producto (escalar) m3 = m1 * 2.0 m3 = np.multiply(m1,2) [[2,4] [6,8]]
División (escalar) m3 = m1/2.0 m3 = np.divide(m1,2) [[0.5,1] [1.5,2]]
Potencia (escalar) m3 = m1**2.0 m3 = np.power(m1,2) [[1,4] [9,16]]
Suma (dimensión) m1 = m + v1 m1 = np.add(m,v1) [[2 4] [4 6] [6 8]]
m2 = m + v2 m2 = np.add(m,v2) [[ 4 5] [ 7 8] [10 11]]
Resta (dimensión) m1 = m - v1 m1 = np.subtract(m,v1) [[0 0] [2 2] [4 4]]
m2 = m - v2 m2 = np.subtract(m,v2) [[-2 -1] [-1 0] [ 0 1]]
Producto (dimensión) m1 = m * v1 m1 = np.multiply(m,v1) [[ 1 4] [ 3 8] [ 5 12]]
m2 = m * v2 m2 = np.multiply(m,v2) [[ 3 6] [12 16] [25 30]]
División (dimensión) m1 = m / v1 m1 = np.divide(m,v1) [[1. 1.] [3. 2.] [5. 3.]]
m2 = m / v2 m2 = np.divide(m,v2) [[0.333 0.667] [0.75 1.] [1. 1.2]]
Potencia (dimensión) m1 = m ** v1 m1 = np.power(m,v1) [[ 1 4] [ 3 16] [ 5 36]]
m2 = m ** v2 m2 = np.power(m,v2) [[ 1 8] [ 81 256] [3125 7776]]

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 Python: Guttag, John V. Introduction to Computation and


Programming Using Python. MIT Press.

Introducción a Numpy

Guía de estilo de programación Python

Documentación:
• Python
• Instalación de Numpy, Biblioteca Numpy, Guía de usuario Numpy

Cheatsheets:
• Python
• Numpy
DIAPOSITIVA 12

También podría gustarte