Un poco de matrices en Octave y Python
Crear matrices en Octave es relativamente fácil, solo hay que delimitar los elementos que la conforman entre paréntesis cuadrados. Los elementos de un renglón se separan por espacios, y los renglones se separan utilizando punto y coma (;).
Por ejemplo, para un vector de cinco elementos, en Octave se define de la siguiente manera:
x = [1.1 2.1 3.1 4.1 5.1]
Y para una matriz de 3x4, se define:
A = [1.1 2.1 3.1 4.1; 5.1 6.1 7.1 8.1; 9.1 10.1 11.1 12.1]
mostrando lo siguiente:
A =
1.1000 2.1000 3.1000 4.1000
5.1000 6.1000 7.1000 8.1000
9.1000 10.1000 11.1000 12.1000
Se pueden concatenar vectores y matrices para crear matrices más grandes.
Por ejemplo, dado el siguiente vector:
x = [1 2 3]
Se puede construir la siguiente matriz a partir de concatenar x varias veces:
A = [x; x; x]
dando como resultado:
A =
1 2 3
1 2 3
1 2 3
Si definimos el vector "y" de la siguiente forma:
y = [1; 2; 3]
y se concatena el vector y varias veces para crear una matriz de la siguiente forma:
B = [y y y]
da como resultado:
B =
1 1 1
2 2 2
3 3 3
Podemos usar las matrices A y B para construir una matriz más grande.
C = [A 2*A; B [1 0 0; 0 1 0; 0 0 1]]
dando como resultado:
C =
1 2 3 2 4 6
1 2 3 2 4 6
1 2 3 2 4 6
1 1 1 1 0 0
2 2 2 0 1 0
3 3 3 0 0 1
Para realizar la misma tarea en Python requiere más pasos, empezando por importar el paquete Numpy.
import numpy as np
Para definir el vector "x":
x = np.array([1.1, 2.1, 3.1, 4.1, 5.1])
Y para definir la matriz ejemplo anterior en Python:
A = np.array([[1.1, 2.1, 3.1, 4.1], [5.1, 6.1, 7.1, 8.1], [9.1, 10.1, 11.1, 12.1]])
que devuelve:
array([[ 1.1, 2.1, 3.1, 4.1],
[ 5.1, 6.1, 7.1, 8.1],
[ 9.1, 10.1, 11.1, 12.1]])
En Python para concatenar arreglos Numpy se usa el método concatenate, por lo que a partir del vector "x" definido de la siguiente forma:
x = np.array([[1, 2, 3]])
crear una matriz A de la siguiente forma:
A = np.concatenate((x, x, x))
da como resultado lo siguiente:
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
Para este ejemplo es importante notar que el vector x en realidad es una matriz Numpy de un único renglon y es importante porque en Python y Numpy no es lo mismo concatenar vectores que concatenar matrices.
Para el vector "y" utilizado previamente, definido de la siguiente forma:
y = np.array([[1],[2],[3]])
al concatenarlo de la siguiente forma:
B = np.concatenate((y,y,y), axis=1)
se obtiene:
array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
En este ejemplo es importante notar que se usó el argumento axis, para indicar que se concatene a la derecha y no hacia abajo.
Finalmente utilizando ambas matrices resultantes A y B al concatenarlas de la siguiente forma:
C1 = np.concatenate((A, 2*A), axis=1)
C2 = np.concatenate((B,[[1, 0, 0], [0, 1, 0], [0, 0, 1]]), axis = 1)
C = np.concatenate((C1, C2))
se obtiene:
print(C)
[[1 2 3 2 4 6]
[1 2 3 2 4 6]
[1 2 3 2 4 6]
[1 1 1 1 0 0]
[2 2 2 0 1 0]
[3 3 3 0 0 1]]
Obteniendo desde Python, resultados equivalentes a los vistos en Octave.
0 Comentarios:
Publicar un comentario
Suscribirse a Comentarios de la entrada [Atom]
<< Página Principal