Articles

Python: Vectores, Matrices y Arrays con NumPy

En esta lección, veremos algunos consejos y trucos para jugar con vectores, matrices y arrays usando la biblioteca NumPy en Python. Esta lección es un muy buen punto de partida si se está iniciando en la Ciencia de datos y necesita una descripción matemática introductoria de estos componentes y cómo podemos jugar con ellos usando NumPy en código.

La biblioteca NumPy nos permite realizar varias operaciones que deben realizarse en estructuras de datos que se usan a menudo en Aprendizaje Automático y Ciencia de Datos, como vectores, matrices y matrices. Solo mostraremos las operaciones más comunes con NumPy que se utilizan en muchos canalizaciones de aprendizaje automático. Finalmente, tenga en cuenta que NumPy es solo una forma de realizar las operaciones, por lo que las operaciones matemáticas que mostramos son el enfoque principal de esta lección y no el paquete NumPy en sí. Empecemos.

¿Qué es un vector?

Según Google, un vector es una cantidad que tiene dirección y magnitud, especialmente para determinar la posición de un punto en el espacio en relación con otro.

Los vectores son muy importantes en el aprendizaje automático, ya que no solo describen la magnitud, sino también la dirección de las entidades. Podemos crear un vector en NumPy con el siguiente fragmento de código:

importar numpy como np
row_vector = np.array()
print(row_vector)

En el fragmento de código anterior, creamos un vector de fila. También podemos crear un vector de columna como:

importar numpy como np
col_vector = np.array(,,])
print(col_vector)

Hacer una Matriz

Una matriz puede entenderse simplemente como una matriz de dos dimensiones. Podemos hacer una matriz con NumPy haciendo una matriz multidimensional:

matrix = np.array(, , ])
print(matrix)

Aunque la matriz es exactamente similar a la matriz multidimensional, la estructura de datos de la matriz no se recomienda debido a dos razones:

  1. La matriz es el estándar cuando se trata del paquete NumPy
  2. La mayoría de las operaciones con NumPy devuelve matrices y no una matriz

Usando una Matriz Dispersa

Para recordar, una matriz dispersa es aquella en la que la mayoría de los elementos son cero. Ahora, un escenario común en el procesamiento de datos y el aprendizaje automático es el procesamiento de matrices en las que la mayoría de los elementos son cero. Por ejemplo, considere una matriz cuyas filas describen cada video en Youtube y las columnas representan a cada usuario registrado. Cada valor representa si el usuario ha visto un vídeo o no. Por supuesto, la mayoría de los valores en esta matriz serán cero. La ventaja con la matriz dispersa es que no almacena los valores que son cero. Esto se traduce en una enorme ventaja computacional y optimización del almacenamiento también.

Vamos a crear una matriz spark aquí:

Para entender cómo funciona el código, veremos la salida aquí:

En el código anterior, usamos la función de un NumPy para crear una matriz de filas dispersas comprimida donde se representan elementos distintos de cero utilizando los índices basados en cero. Hay varios tipos de matriz dispersa, como:

  • Comprimido columna dispersa
  • Lista de listas
  • Diccionario de claves

no vamos a bucear en otras matrices dispersas aquí, pero sé que cada uno de su uso es específico y nadie puede ser denominado como ‘el mejor’.

Aplicar operaciones a todos los elementos vectoriales

Es un escenario común cuando necesitamos aplicar una operación común a múltiples elementos vectoriales. Esto se puede hacer definiendo una lambda y luego vectorizándola. Veamos un fragmento de código para el mismo:

matrix = np.array (,
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matrix)

Para entender cómo funciona el código, veremos la salida aquí:

En el fragmento de código anterior, usamos la función vectorize, que es parte de la biblioteca NumPy, para transformar una definición lambda simple en una función que puede procesar todos y cada uno de los elemento del vector. Es importante tener en cuenta que vectorizar es solo un bucle sobre los elementos y no tiene ningún efecto en el rendimiento del programa. NumPy también permite la difusión, lo que significa que en lugar del código complejo anterior, simplemente podríamos haber hecho:

matrix * 5

Y el resultado habría sido exactamente el mismo. Quería mostrar la parte compleja primero, de lo contrario, ¡te habrías saltado la sección!

Media, Varianza y Desviación Estándar

Con NumPy, es fácil realizar operaciones relacionadas con estadísticas descriptivas de vectores. La media de un vector se puede calcular como:

np.media(matriz)

la Varianza de un vector se puede calcular como:

np.var(matriz)

la desviación Estándar de un vector se puede calcular como:

np.std (matrix)

La salida de los comandos anteriores en la matriz dada se da aquí:

Transponer una matriz

Transponer es una operación muy común de la que escuchará cuando esté rodeado de matrices. La transposición es solo una forma de intercambiar valores de columnas y filas de una matriz. Tenga en cuenta que un vector no se puede transponer, ya que un vector es solo una colección de valores sin categorizar esos valores en filas y columnas. Tenga en cuenta que convertir un vector de fila en un vector de columna no es transponer (basado en las definiciones de álgebra lineal, que está fuera del alcance de esta lección).

Por ahora, encontraremos la paz simplemente transponiendo una matriz. Es muy sencillo acceder a la transposición de una matriz con NumPy:

matrix.T

La salida del comando anterior en la matriz dada se da aquí:

Se puede realizar la misma operación en un vector de fila para convertirlo en un vector de columna.

Aplanar una matriz

Podemos convertir una matriz en una matriz unidimensional si queremos procesar sus elementos de manera lineal. Esto se puede hacer con el siguiente fragmento de código:

matriz.aplanar ()

La salida del comando anterior en la matriz dada se da aquí:

Tenga en cuenta que la matriz aplanada es una matriz unidimensional, simplemente lineal.

Calcular los valores propios y los vectores propios

Los vectores propios se utilizan con mucha frecuencia en los paquetes de aprendizaje automático. Por lo tanto, cuando una función de transformación lineal se presenta como una matriz, entonces X, Vectores propios son los vectores que cambian solo en la escala del vector, pero no en su dirección. Podemos decir que:

Xv = yv

Aquí, X es la matriz cuadrada y γ contiene los Valores propios. Además, v contiene los vectores propios. Con NumPy, es fácil calcular Valores propios y vectores propios. Aquí está el fragmento de código donde demostramos lo mismo:

evalues, evectors = np.linalg.eig(matriz)

La salida del comando anterior en la matriz dada es dado a continuación:

Productos de puntos de Vectores

Productos de puntos de Vectores es una manera de multiplicar 2 vectores. Te dice cuánto de los vectores están en la misma dirección, en lugar del producto cruzado que te dice lo contrario, qué tan poco están los vectores en la misma dirección (llamado ortogonal). Podemos calcular el producto escalar de dos vectores como se indica en el fragmento de código aquí:

a = np.array ()
b = np.array ()
np.dot (a, b)

La salida del comando anterior en los arrays dados se da aquí:

Agregar, Restar y Multiplicar matrices

Agregar y Restar matrices múltiples es una operación bastante sencilla en matrices. Hay dos maneras de hacerlo. Veamos el fragmento de código para realizar estas operaciones. Para mantener esto simple, usaremos la misma matriz dos veces:

np.agregar(matriz, matriz)

a continuación, dos matrices pueden restarse como:

np.restar (matriz, matriz)

La salida del comando anterior en la matriz dada se da aquí:

Como se esperaba, cada uno de los elementos de la matriz se agrega/resta con el elemento correspondiente. Multiplicar una matriz es similar a encontrar el producto escalar como lo hicimos anteriormente:

np.punto (matriz, matriz)

El código anterior encontrará el verdadero valor de multiplicación de dos matrices, dado como:

matrix * matrix

La salida del comando anterior en la matriz dada se da aquí:

Conclusión

En esta lección, pasamos por muchas operaciones matemáticas relacionadas con Vectores, Matrices y Arrays que se utilizan comúnmente para el procesamiento de datos, la estadística descriptiva y la ciencia de datos. Esta fue una lección rápida que cubría solo las secciones más comunes e importantes de la amplia variedad de conceptos, pero estas operaciones deberían dar una muy buena idea de lo que se pueden realizar todas las operaciones mientras se tratan con estas estructuras de datos.

Por favor, comparta sus comentarios libremente sobre la lección en Twitter con @ linuxhint y @sbmaggarwal (¡ese soy yo !).