¿Qué es el producto interno y cómo se diferencia de la multiplicación de matrices?
El producto interno es fundamental en álgebra lineal y se distingue de la simple multiplicación de una matriz por un vector, ya que implica no solo una operación matemática sino también una comprensión más profunda de cómo interactúan los vectores en el espacio. Mientras que la multiplicación estándar de matrices y vectores proporciona una nueva matriz, el producto interno resulta en un vector de una dimensión específica. ¿Quieres conocer más a fondo estas operaciones y entender cómo utilizarlas en tus proyectos? ¡Acompáñame mientras desglosamos el proceso!
Multiplicación de matriz por vector
Cuando multiplicamos una matriz por un vector, el resultado es otra matriz si se cumplen las condiciones de tamaño. Por ejemplo, considere una matriz de tamaño 3x2 y un vector de dimensión 2. Al multiplicarlos, obtienes una nueva matriz que mantiene ciertas propiedades originales mientras multiplica cada componente del vector con las columnas correspondientes de la matriz.
# Ejemplo código para multiplicación de matriz por vectorimport numpy as np
# Definiendo la matriz y el vectormatriz = np.array([[1,2],[3,4],[5,6]])vector = np.array([2,3])# Multiplicación de matriz por vectorresultado_matriz = np.dot(matriz, vector)print(resultado_matriz)
En este ejemplo, el proceso de "broadcasting" toma lugar al multiplicar la primera columna por 2 y la segunda columna por 3, obteniendo resultados individuales que se suman.
¿Cómo se realiza el producto interno de una matriz y un vector?
El producto interno, también conocido como "dot product" o "producto escalar", implica multiplicar las correspondientes entradas de matriz y vector y luego sumar estos productos. A diferencia de la multiplicación de matriz, el resultado es un vector donde cada elemento es una suma de productos diferentes.
# Ejemplo código para producto internoresultado_producto_interno = np.inner(matriz, vector)print(resultado_producto_interno)
Aquí, cada elemento del resultado es calculado multiplicando los elementos correspondientes del vector y la matriz, luego sumándolos. Esto da un resultado específico basado en las dimensiones del vector y del número de filas en la matriz.
Consideraciones y ejercicios para profundizar
Diferentes métodos: Hay dos formas principales de realizar el producto interno: calculándolo directamente al multiplicar el vector y la matriz, y utilizando funciones de bibliotecas como numpy que ofrecen funciones definidas como np.dot().
Prueba interactividad: Multiplica una matriz por un vector y luego invierte el orden: multiplicar el vector por la matriz. Observando los resultados, notarás cómo varían o permanecen iguales bajo ciertas condiciones.
Participación en discusiones: Aprovecha los foros de discusión para resolver dudas y compartir hallazgos con otros estudiantes. La interacción y el intercambio de ideas enriquece el aprendizaje.
Este conocimiento no solo es esencial para quienes quieren adentrarse en campos como el machine learning o data science, sino que también es una habilidad clave en la programación y la resolución de problemas matemáticos complejos. ¡Sigue explorando y no dudes en preguntar lo que necesites! Nos vemos en la próxima clase.
“producto interno” toma dos vectores y regresa un escalar.
“producto externo” toma dos vectores y devuelve una matriz.(este no se menciono pero vale la pena lo revisen)
Para hacer el producto externo deben hacer:
C = np.outer(vectorA, vectorB)# Nos devuelvearray([[4,6],[6,9]])# Tambien se puede hacer entre vectores y vector por matriz.# Lo que realiza basicamente es multplica el primer elemento el vectorA por el primer elemento del vectorB y lo coloca. Luego vuelve a multplicar el primer elemento del vectorA pero esta ves por el segundo elemento del vectorB y asi sucesivamente.
Pueden ver el otro ejemplo en este video
Gracias por el aporte
Existe otra manera de hacer producto punto, con la letra "@"m por ejemplo : Matriz_A @ Matriz_B ;)
More examples
Comprobado si funciona!
El profesor está multiplicando una matriz de 3x2, con un vector (matriz de 1x2). Eso no es válido. Python lo que hace es interpretar ese vector de 1x2 como una matriz columna de 2x1 (2 filas y una columna) y luego hace la multiplicación de la manera como lo hace el profesor.
Para que la multiplicación de matrices esté definida el número de columnas de la primera debe coincidir con el número de filas de la segunda.
(3x2) * (1x2) no está definida la multiplicación
(3x2) * (2x1) Es posible multiplicar. El resultado es una matriz de 3 filas y 1 columna.
Aclaro como funciona porque la representación gráfica que hace el profesor al multiplicar puede llevar a confusión.
Es correcto, no se puede olvidar que Python trata las filas y columnas de 1 dimensión(eje) de igual manera, por lo que puede causar una confusión al momento de operar
Hola, yo tuve la misma dua e investigando encontre el porque:
cuando haces np.array([2,3]) numpy lo interpreta como un conjunto de numeros cualquiera, esto hace que al hacer .dot el lo tome como un vector columna que es lo que se le facilita.
Si se forza a que sea un vector fila desde el inicio con np.array([[2,3]]) entonces python si lo interpreta como un vector fila y al hacer .dot si manda el error de que las dimensiones no coinciden.
Producto de matrices y vectores
Podemos usar el producto simple * que en python hace una multiplicación elemento a elemento y lo coloca en su posición respectiva (hace un broadcasting al igual que la suma)
Producto punto de matrices y vectores
Usa la definición del producto punto, es decir suma la multiplicación de elementos dos a dos, generando un producto punto por cada vector de la matriz
Me dio curiosidad y realice un producto interno entre tensores y matrices. Descubrí que se puede hacer producto interno de ambos lados mientras las dimensiones sean correctas. Por lo tanto también se pueden hacer producto interno entre matrices. Este es mi código de mis pruebas:
Y cómo se puede apreciar.. los resultados no son iguales..
Hola, alguien me puede explicar por que en matrizXvector le da un resultado? debería arrojar error.
es como si hubiese transpuesto el vector y lo replicara dos veces, pero no encuentro el sentido por que igual su resultado fue un vector..
help me
En python, Las operaciones A = matriz * vector y A = vector * matriz dan el mismo resultado, pero las operaciones A = matriz.dot(vector) y A = vector.dot(matriz) no. La primera es la forma correcta, la segunda arroja un error, tal como indican las reglas de algebra lineal.
Producto punto (escalar o interno)
En algebra lineal el producto punto es una de las formas de multiplicación de matrices; consiste en que por cada elemento del vector A lo multiplicaremos por el elemento correspondiente en e vector B y su producto será sumado con los siguientes componentes en el mismo orden, mejor vean la imagen >-<
[a,b].[d,e]=((a.c)+(b.c))
Estaba confundido ya que por lo general el producto punto nos devuelve un escalar, pero buscando informacion eso depende de las dimensiones del array;
Producto punto en una dimensión (vectores)
a = np.array([2,1,5,4])b = np.array([3,4,7,8])pp = np.dot(a, b)>>77
En ese caso obtenemos un escalar, ya que estamos trabajando en una dimensión
Producto punto en dos dimensiones (matrices)
Se resuelve en la siguiente clase jajaja, pero basicamente debemos multiplicar la primer fila por la primer columna, y nos dara el elemento (0,0); despues por la siguiente columna, nos dara el ((0,1). Bajamos a la fila 2 y seguimos sucesivamente
Agradezco a Valentina Hurtado y a Patricio Requena del grupo de DS de telegram que me ayudaron cuando tuve el problema
¿Como puedo diferenciar un vector columna vs un vector fila?
Usando el atributo shape.
v.shape
Si el resultado es (n,1) entonces es un vector fila.
Si es (1, n) entonces es un vector columna.
Los numero que van hacia la horizontal son columnas y los numero que van hacia abajo son filas
El producto interno entre una matriz y un vector es una operación muy común en álgebra lineal, también conocida como producto matriz-vector.
Cabe destacar que para poder realizar el producto interno entre una matriz y un vector, la segunda dimensión de la matriz debe ser igual a la primera dimensión del vector. En este ejemplo, la segunda dimensión de la matriz A es igual a la primera dimensión del vector v, por lo que la operación de multiplicación es posible.
import numpy as np
# Creamos una matriz de 2x3
A= np.array([[1,2,3],[4,5,6]])# Creamos un vector de 3 elementos
v = np.array([7,8,9])# Calculamos el producto interno entre A y v
u = np.dot(A, v)print(u)# resultado:[50122]
vector por matriz no es igual a matriz por vector
MatrizVector o VectorMatriz es lo mismo, sin embargo, el producto interno si es distinto
Aqui puedes ver como se desarrollan
.
.
Have a great day ⚡
Es lo mismo multiplicar un vector por una matriz que una matriz por un vector?
No. No es lo mismo.
Para que sea posible la multiplicación entre matriz y vector o matriz por matriz, debemos revisar las propiedades:
El número de columnas de A debe ser igual al número de columnas de B, → A: matriz, B: vector.
Ex: A(m=3,n=2) y B(p=2, q=1). n=p, por lo tanto es posible multiplicar y además, será del tamaño, mxq(3x1).
No son conmutativas: AB != BA.
Puedes revisar este enlace (ya lo habían compartido) o en este video
En Python, en la librería de hace referencia a:
"If a is an N-D array and b is a 1-D array, it is a sum product over the last axis of a and b"
Esto quiere decir:
A.shape → (3,2) y B.shape → (2,), suma el producto sobre los últimos ejes, entonces, el eje de A sería 2 y el de B sería 2 (me indica que contiene 2 elementos o componentes). Así, se cumpliría A[columnas]=B[filas].
Pero si es al revés, B[columnas] = A[filas], B(2) != A(3)
matemáticamente, si tengo una matríz MxN y un vector HxK pues el resultado de multiplicar la matriz por el vector será una matriz de MxK siempre y cuando N sea igual a H..
hay funciones de numpy que hagan esa correcta operación matemática sin artificio de la operación rara de .dot o el otro producto?
entiendo lo que es producto punto matemáticamente, pero no habia visto como se manipulaba para si o si tener un resultado.
Es el producto punto justo esa misma operación que buscas con 'esos requísitos'. Según voy haciendo pruebas la multiplicación de matrices que enseñan en matemáticas es el producto punto -o el interno como llaman aquí- salvo por... un gran detalle; que los 'vectores' tienen dualidad vertical y horizontal.
O sea, el vector [3 4] tiene un 'dual-shape' de 2x1 y de 1x2 a pesar de que numpy reconozca vector.shape = (2,). Tampoco dice que sea 2x1, o sea no lo reconoce como matriz.
Por lo tanto:
matriz (3x2) @ vector (ahora 2x1) funcionará
vector (ahora 1x2) @ matriz.T (2x3) funcionará
vector @ matriz (3x2) no funcionará porque no hay combinación de Nx3 para el vector
me están confundiendo entre broadcasting y multiplicación de matrices según mis clases de álgebra lineal:
si dos matrices A,B de (l,m) y (k,s) respectivamente se multiplican AB solo si m=k esto es si las columnas de A son iguales a las filas de B y resultaría una matriz C con (l,s) filas y columnas
mientras que broadcasting por lo que vi es:
con dos matrices A,B con (l,m) y (k,s) respectivamente se multiplican AB solo si l = k ó m = s esto es que se ampliaría lo restante resultando en una matriz C con la dimensión de filas y columnas mas grandes entre A y B
pero tambien hay que mencionar que el producto interno devuelve un escalar mientras que aqui como lo definieron devuelve una matriz
Me gustaria que explicaran el porque tenemos que usar la multiplicación o el producto interno. Chat GPT menciono que la multiplicación se usa para transformaciones lineales, modelos de regresión, PCA y redes neuronales. El producto interno se utiliza para medición de similitud, cálculo de activación de redes neuronales y proyecciones. Estaria bien explicar estos conceptos porque podrian ser preguntados en entrevisas de trabajo.
Pequeño tip que me ayudó mucho.
Al nombrar las dimensiones de una matriz o vector lo haremos de la forma:
Filas x Columnas :
—> n x m para nuestra matriz
—> m x k para nuestro vector
Para poder realizar el producto de nuestra matriz por vector tendremos que cumplir que:
(n x m)(m x k)
Es decir, las columnas de la matriz coinciden con las filas del vector (Puede ser en el orden contrario para hacer coincidir un vector fila).
Obteniendo como resultado un objeto de dimensiones:
(n x k)
Por lo que entiendo Python hace algunas movidas raras como el broadcasting cuando estas dimensiones no coinciden, como en el caso de tratar de hacer el producto punto con un vector fila.
Para todos aquellos que están estudiando Algebra Lineal o en algún momento la estudiaron, pero no tienen idea de por que los productos entre matrices son así, que significa el determinante, y de donde se sacaron esas formulas que tanto nos memorizamos.
Les recomiendo ampliamente esta lista de reporducción en Youtube que nos muestra gráficamente todas las definiciones de Algebra Lineal, para que por fin entendamos el por qué de todas estas cosas.
Es buenísimo y desde el primer momento que la vi, me enamoré del canal.