Numpy para Vectores y matrices

Resumen de algunas funciones para vectores y matrices como arreglos en la libreria Numpy de Python, usadas en el curso para facilitan el cálculo numérico. El orden de las instrucciones es el que aparece en las entradas del blog.

Lo primero es hacer el llamado a las librerías con el álias ‘np’

import numpy as np

Vectores

puntos espaciados entre [a,b] – np.linspace()

para obtener puntos en el rango [a,b] para una cantidad de tramos. Se obtienen tramos+1 puntos .

a = 1
b = 2
tramos = 4
x = np.linspace(a,b,tramos+1)
>>> x
array([ 1.  ,  1.25,  1.5 ,  1.75,  2.  ])

rango de valores en vector – np.arange(a,b,dt)

crea un vector con valores en el rango [a,b) y espaciados dt.

t=np.arange(0,10,2)
>>> t
array([0, 2, 4, 6, 8])

transponer vector – np.transpose()

>>> fila = np.array([1,2,3])
>>> columna = np.transpose([fila])
>>> columna
array([[1],
       [2],
       [3]])

indices para ordenar – np.argsort()

para ordenar por una columna específica:
– se obtiene un vector con la columna que se requiere ordenar: tabla[:,0]
– con el vector se determinan los índices para ordenar la tabla por filas: np.argsort()
– se aplica los índices a una copia de la matriz: tabla[orden]

tabla = np.array([[5,3],
                  [4,2],
                  [3,1],
                  [2,4],
                  [1,5]])

# ordenar por primera columna
referencia = tabla[:,0]
orden = np.argsort(referencia)
ordenada = tabla[orden]

print(orden)
print(ordenada)

resultado:

[4 3 2 1 0]
[[1 5]
 [2 4]
 [3 1]
 [4 2]
 [5 3]]
# ordenar por segunda columna
referencia = tabla[:,1]
orden = np.argsort(referencia)
ordenada = tabla[orden]
print(orden)
print(ordenada)

resultado:

[2 1 0 3 4]
[[3 1]
 [4 2]
 [5 3]
 [2 4]
 [1 5]]

Matrices en Numpy

concatenar- np.concatenate((A,b), axis=1)

concatenar usa el parámetro axis: 0 para filas, 1 para columnas.

import numpy as np
cantidad = np.array([[4,2,5],
                     [2,5,8],
                     [5,4,3]])

pagado = np.array([[60.70],
                   [92.90],
                   [56.30]])

matriz = np.concatenate((cantidad,pagado),axis=1)
>>> matriz
array([[  4. ,   2. ,   5. ,  60.7],
       [  2. ,   5. ,   8. ,  92.9],
       [  5. ,   4. ,   3. ,  56.3]])

resolver sistema de ecuaciones – np.linalg.solve(A,B)

Resuelve el sistema de ecuaciones dado por una matriz A y un vector B. siendo, por ejemplo:

 0 =  c1 +  c2
-5 = -c1 - 2c2

c1 = -5 
c2 = 5
>>> A = [[ 1, 1],
	 [-1,-2]]
>>> B = [0,-5]
>>> np.linalg.solve(A,B)
array([-5.,  5.])
>>>

Otras instrucciones

np.pi constante con valor π

>>> np.pi
3.141592653589793
np.sin(t)
np.cos(t)
función trigonométrica en radianes. La variable t puede ser un escalar o un arreglo.

>>> t=0.65
>>> np.sin(0.65)
0.60518640573603955
>>> t=[0, 0.3, 0.6]
>>> np.sin(t)
array([ 0. , 0.29552021, 0.56464247])
np.abs() obtiene el valor absoluto de un número. En el caso de un número complejo obtiene la parte real.
np.real(complejo)
np.imag(complejo)
obtiene la parte real de los números complejos en un vector. Se aplica lo mismo para la parte imaginaria del número complejo.
complex(a,b) crea el número complejo a partir de los valores de a y b.
a=2
b=3
el resultado es: 2+3j
np.piecewise(t, t>=donde, [1,0]) función que crea a partir de t, los valores de la condición t>=donde, ubicando los valores de 1, para otro caso es 0. Usada en la función escalón.
np.roots([a,b,c]) obtiene las raíces del polinomio:
ax2+bx+c
x2 + 3 x + 2 = (x+1)(x+2)

>>> np.roots([1,3,2])
array([-2., -1.])