Sunteți pe pagina 1din 12

INTRODUCCIÓN A NUMPY

0
¿Qué es numpy?

Numpy es una librería de Python que contiene objetos y funciones especializadas para
computación científica. Provee al lenguaje con herramientas como arreglos n-dimensionales,
matrices, funciones de álgebra lineal, transformadas de Fourier, números aleatorios y más.

Dado que numpy es una librería, es necesario importarla antes de poder usar los objetos y
funciones que posee.

Arreglos en numpy

Un arreglo es un conjunto ordenado de elementos, todos del mismo tipo de dato, indexados por
una tupla de enteros positivos.

Los arreglos de Numpy pueden tener una o más dimensiones. Cada dimensión del arreglo se
conoce como axis o eje. A su vez, el número de axis que tiene un arreglo, es decir el número de
dimensiones, tiene como nombre rank.

Por ejemplo:

El rank del arreglo mostrado es 2, ya que es un arreglo bidimensional, es decir tiene dos axis. La
primera dimensión o axis tiene longitud 2, mientras que el segundo axis tiene longitud de 3.

Atributos de un arreglo

Antes de poder revisar cómo crear arreglos con numpy y sus operaciones básicas, es necesario
indicar algunas de las propiedades que tiene un arreglo de numpy. Numpy nos provee con
sentencias para obtener los valores de dichas propiedades, es importante recordar que estas
sentencias no son funciones así que no llevan llaves al final.

Para fines demostrativos obtendremos las propiedades del arreglo anterior al que llamaremos A.
Las propiedades del arreglo A son:

 ndim : Nos permite obtener el rank del arreglo

 shape: Nos permite obtener las dimensiones del arreglo. Devuelve una tupla de enteros
con la longitud de cada axis del arreglo.

 size: Nos permite obtener el numero total de elementos en el arreglo.

1
 dtype: Nos permite obtener el tipo de datos de los elementos contenidos en el arreglo.

Creación de Arreglos usando numpy

Hay varias maneras de crear un arreglo de numpy la más sencilla es usando la función array de
numpy que toma como entrada un tupla o lista de Python y devuelve una copia de la lista o tupla
pero de tipo array.

Por ejemplo:

Además numpy provee funciones especiales para crear arreglos típicos, estas funciones son:

 zeros: Permite crear un arreglo lleno de ceros, recibe como entrada una tupla con la
longitud de los axis del arreglo. Por ejemplo:

 ones: Permite crear un arreglo lleno de unos, recibe como entrada una tupla con la
longitud de los axis del arreglo. Por ejemplo:

Otro arreglo típico que podría resultar útil es un arreglo cuyos elementos sean una secuencia de
números enteros, para esto numpy provee la función arange, esta función es análoga a la función
range con la diferencia de que en lugar de devolver una lista, devuelve un arreglo de numpy.
Por ejemplo:

2
Note que el arreglo creado es de rank 1, es decir que solo tiene un axis o dimensión.

Es posible además crear un arreglo cuyos elementos sean una secuencia de números decimales,
para esto numpy nos provee con la función linspace que toma como entrada 3 enteros que
representan el inicio de la secuencia, el final de la secuencia y el número de elementos de la
secuencia respectivamente .
Por ejemplo:

Note que el arreglo devuelto es de rank 1, es decir que solo tiene un axis o dimension.

Alterar dimensiones de un arreglo

En la sección anterior revisamos como crear arreglos cuyos elementos sean una secuencia de
números, sin embargo los métodos que nos provee numpy para la creación de los mismo solo
devuelven arreglos unidimensionales, a menudo nos será necesario cambiar las dimensiones de un
arreglo, como en el caso descrito anteriormente, por lo que la librería nos provee con la función
reshape que toma como entrada las nuevas dimensiones del arreglo, es decir que cada número
representará la longitud de un axis del arreglo.
Por ejemplo:

Note que el size del nuevo arreglo es igual al del arreglo original por lo que la multiplicación de los
números en la entrada de la función reshape debe ser igual a size del arreglo original.

3
Operaciones Básicas

Las operaciones aritméticas como la suma, resta, potenciación y demás se efectúan elemento a
elemento para los arreglos de numpy, es decir que multiplicar un entero por un arreglo producirá
un nuevo arreglo con los cada uno de los elementos de arreglo original multiplicado por el entero.
Por ejemplo:

Ademas las operaciones aritmeticas entre arreglos tambien se efectuan elemento a elemento.
Por ejemplo:

Para realizar una multiplicacion matricial entre dos arreglos, numpy nos provee la funcion dot, que
toma como entrada los arreglos a multiplicar y devuelve un nuevo arreglo con el resultado.
Por ejemplo:

4
Suma de los elemetos en un axis de un arreglo

Dado que los arreglos de numpy usualmente son usados para almacenar numeros, cuenta con
funciones especialisadas que solo se pueden realizar sobre arreglos cuyos elementos sean de
algun tipo numero. Este es el caso de la funcion sum que suma todos los elementos de cada fila o
columna de un arreglo, la funcion toma como entrada el axis del que se quiere sumar los
elementos.

Por ejemplo:

Añadir elementos a un arreglo

En secciones anteriores revisamos como alterar las dimensiones de un arreglo sin modificar sus
elementos, sin embargo a menudo nos será útil añadir nuevos elementos a un arreglo o eliminar
elementos del mismo, para esto Python nos provee las siguientes funciones:

 append: Permite añadir un nuevo elemento a un arreglo. Toma como entradas el arreglo
original y los elementos a añadir. La función devuelve una copia de los elementos del
arreglo original con los nuevos elementos añadidos.
Por ejemplo:

Note que el nuevo arreglo es de rank 1, es decir solo tiene una dimension.

 delete: Permite eliminar elementos de un arreglo. Toma como entradas el arreglo original
y una lista con los indicies de los numero a eliminar del arreglo.

5
Por ejemplo:

Note que los índices de los elementos a eliminar del arreglo original, son los indicies que
los elementos tuvieran si el arreglo fuera unidimensional.

Otro ejemplo de alteraciones de a los elementos de un arreglo es la transposición, para esto


numpy nos provee la función transpose que nos permite transponer los elementos de un arreglo.
Por ejemplo:

Matrices

Las matrices de numpy son muy parecidas a los arreglos, con la diferencia de que son únicamente
bidimensionales, es decir tienen 2 axis.
Por ejemplo:

6
Operaciones Básicas

Las operaciones aritméticas para una matriz de numpy son todas operaciones matriciales, es decir
que si se multiplica un escalar por una matriz el resultado será una nueva matriz con los elementos
de la matriz original multiplicados por el escalar, sin embargo si se multiplican dos matrices, el
resultado será la multiplicación matricial de las mismas.

Por ejemplo:

Note que para la multiplicación matricial, se deben usar matrices con las dimensiones correctas

7
Ejercicio de Aplicación

Escriba un programa que dado un arreglo bidimensional con las notas de todos los estudiantes
registrados en la materia fundamentos de programación, calcule el promedio de cada paralelo en
el examen del primer parcial materia. Con esta información, luego construya un nuevo arreglo
bidimensional en el que cada columna tenga como primer elemento el promedio de un paralelo,
seguido de todas las notas del mismo. Asuma que en cada fila del arreglo original se encuentran
las calificaciones de cada estudiante de un paralelo, además en cada paralelo hay exactamente el
mismo número de estudiantes N, finalmente existen M paralelos.

Resolución:

import numpy as np
# arreglo original con notas de estudiantes
notas = np.array([[98,96,56,20],[11,53,85,93],[78,46,34,73],[70,60,43,100]])
M = notas.shape[0] # numero de paralelos
N = notas.shape[1] # numero de estudiantes
# se calcula el promedio de las notas por paralelo
promedios = notas.sum(axis=1)/(M)
# se transpone el arreglo de notas
notasTraspuesta = notas.transpose()
# Se combina el arreglo de notas traspuestas con el arreglo de promedios

resultado = np.append(promedios,notasTraspuesta)
resultado = resultado.reshape((5,4))
print(resultado)

8
Slicing de un arreglo de numpy

Primero crearemos un array en la variable a con números del 0 al 9

>>> a = np.arange(10)

al imprimir a obtendremos lo siguiente

>>> print a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

si deseamos imprimir el valor en el índice 3


>>> print a[3]
4

ahora si solo queremos imprimir los 5 primeros valores

>>> print a[:5]


[0 1 2 3 4]

si queremos imprimir los del sexto valor en adelante

>>> print a[5:]


[5 6 7 8 9]

si queremos imprimir los valores del 3 al 7

>>> print a[3:8]


[3 4 5 6 7]

notar que al hacer slicing [a : b] el valor en el índice a SI se incluye y el valor en el índice b


NO.

Si quisiéramos imprimir cada 3 números empezando entre el segundo valor y el noveno. (recordar
que el primer valor sería el que tiene índice 0, y el noveno tendría de índice 8)

>>> print a[1:9:3]


[1 4 7]

Ahora queremos reemplazar por 100 a los valores desde el tercero al octavo, saltado un lugar

>>> a[2:9:2]=100

imprimimos a para comprobar

>>> print a
[ 0 1 100 3 100 5 100 7 100 9]

para imprimir el arreglo en sentido opuesto solo debemos de escribir

9
>>> print a[::-1]
[ 9 100 7 100 5 100 3 100 1 0]

__________________________________________________________

Ahora procederemos a trabajar en dos dimensiones, para esto crearemos la siguiente matriz de
5x4

>>> b = np.array(array([[ 0, 1, 2, 3],


[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]]))

para obtener un valor solo debemos de indicar sus índices [x,y]

>>> print b[2,3]


23

Si deseo obtener la tercera columna

>>> print b[:,2]


[ 2 12 22 32 42])

La tercer fila

>>> print b[2,:]


[20 21 22 23]

10
Ejercicio:

Tomando en cuenta que tenemos:

NOTA Matemát. Fisica. Quimica. Anatomia.


S
Est. 0 100 80 94 75
Est. 1 65 78 76 87
Est. 2 74 96 65 43
Est. 3 98 87 90 95
Est. 4 40 65 59 72
Est. 5 87 49 67 81

Donde las filas representan 6 estudiantes los cuales están viendo 4 materias. Represente estas
calificaciones en una matriz en numpy.

1) El profesor de la materia de física se equivocó al colocar la calificación del Est. 3 que en


lugar de ser 87 era 97, corríjala usando lo aprendido.
2) En Química, los 4 primero estudiantes presentaron el mejor proyecto, como recompensa
todos recibirán un 100 en la calificación. Realice este cambio usando una solo línea de
código usando lo aprendido
3) El Est.4 solicita que se le de las calificaciones de las 3 primeras materias, usando slicing
obtener la fila del Est.4

Solución:

c = np.array([[100, 80, 94, 75], [65, 78, 76, 87], [74, 96, 65,
43], [98, 87, 90, 95], [40, 65, 59, 72], [87, 49, 67, 81]])

1)

>>> c[3,1]=97

2)

>>> c[:4,3]=100

3)
>>> print c[4, :3]

11

S-ar putea să vă placă și