3. Numpy
- Libreria de extension de Python para trabajo con
Vectores y Matrices.
- Algebra lineal, Transformadas de Fourier y Numeros
aleatorios.
- Base para otras librerias de calculos y graficos
numericos: matplotlib, scipy
- Principal elemento es el Arreglo n-dimensional
homogeneo
4. Arreglos
- Arreglo multidimensional homogeneo
- Elementos del mismo tipo
- Indexados por una tupla de enteros positivos
- Cada dimension se denomina Axe (Eje)
- La cantidad de ejes se denomina Rank (Rango)
- Clase ndarray (alias: array)
- Propiedades: ndim, shape, size, dtype
import numpy as np
a = np.array( [ [ 1, 2, 3], [4, 5, 6], [7, 8, 9] ] )
>>> a.ndim
3
>>> a.shape
(3,3)
>>> a.size
9
5. Arreglos
- Creacion explicita mediante un arreglo(tupla) python o un
arreglo(tupla) de arreglos(tuplas).
- Podemos definir el tipo con un parametro “dtype”
- numpy.zeros( dimensiones )
- numpy.ones( dimensiones )
- numpy.empty ( dimensiones )
- arange(inicio, fin, saltos)
- linspace(inicio, fin, cantidad)
- reshape( dimensiones )
import numpy as np
a = np.array( [ [ 1, 2, 3], [4, 5, 6], [7, 8, 9] ] )
b = np.ones( (3, 3) )
z = np.zeros( (3, 3) )
a2 = np.arange( 0, 10, 0.2 )
a3 = np.linspace( 0, 10, 27 )
a33 = a3.reshape(3,3,3)
!
7. Indexado, Particion, Iteracion
- Arreglos de 1 dimension son tratados como listas normales,
iteracion, particion e indices
- Multidimensionales: Un indice por eje, especificado en una
tupla separada por “,” Iterar sobre la primera dimension o
utilizando flat para recorrer los elementos
# Unidimensionales
a = np.arange(10) ** 2
>>> print a
[ 0 1 4 9 16 25 36 49 64 81]
>>> print a[0:5]
[ 0 1 4 9 16]
>>> for i in a:
... print i,
...
0 1 4 9 16 25 36 49 64 81
!
# Multidimensionales
a = np.arange(4).reshape((2,2))
>>> print a
[[0 1]
[2 3]]
>>> print a[1,0]
2
>>> b = np.arange(16).reshape((4,4))
>>> print b[1:3,1:3]
[[ 5 6]
[ 9 10]]
8. Vistas y Copias
- Cuando se realizan
asignaciones o particionados
realmente lo que se obtiene es
una vista de los mismos datos. Por
lo que si se modifica estos se
modifica el valor original.
- Para copiar valores y dejar los
originales utilizamos la funcion
“copy”
>>> a = np.arange(16).reshape( (4,4) )
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> b = a[1:3, 1:3]
>>> b
array([[ 5, 6],
[ 9, 10]])
>>> b[0,0]
5
>>> b[0,0] = 999
>>> b
array([[999, 6],
[ 9, 10]])
>>> a
array([[ 0, 1, 2, 3],
[ 4, 999, 6, 7],
[ 8, 9, 10, 11],
[ 12, 13, 14, 15]])
9. Modificando Arreglos
- La funcion “ravel” aplana el
arreglo a una dimension.
- Funcion “reshape”permite
crear una vista con otra
dimension.
- Funcion “transpose”cambia
las dimensiones
>>> a = np.arange(16).reshape( (4,4) )
>>> a.ravel()
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15])
>>> b = a.reshape( (2, 8) )
>>> b
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15]])
>>> b.transpose()
array([[ 0, 8],
[ 1, 9],
[ 2, 10],
[ 3, 11],
[ 4, 12],
[ 5, 13],
[ 6, 14],
[ 7, 15]])
10. Matrices
- Clase especial “matrix”
- Construyen a partir de arreglos numpy
- Funciones de Algebra Lineal: T, I, solve
A = np.matrix(np.arange(1,5).reshape(2,2))
>>> A
matrix([[1, 2],
[3, 4]])
>>> X = np.matrix(“5 7”)
>>> Y = X.T
>>> A * Y
matrix([[19],
[43]])
>>>np.linalg.solve(A,Y)
matrix([[-3.],
[ 4.]])