Matrix Multiplication#
References#
[2]:
import numpy as np
How it happens#
1st row for matrix a is multiplied by 1st column of matrix b and resulted values are added, and this will go on for all the rows of matrix a multiplying with all the columns values of matrix b.
n k k
+-------------+ +-------------+ +-------------+
| | | | | |
m | | n | | m | |
| a | X | b | = | |
| | | | | |
| | | | | |
+-------------+ +-------------+ +-------------+
(m, n) (n, k) (m, k)
\begin{align*} \begin{bmatrix} a_{1,1} & a_{1,2} & \dots & a_{1,n}\\ a_{2,1} & a_{2,2} & \dots & a_{2,n}\\ & & .\\ & & .\\ a_{m,1} & a_{m,2} & \dots & a_{m,n} \end{bmatrix} \times \begin{bmatrix} b_{1,1} & b_{1,2} & \dots & b_{1,k}\\ b_{2,1} & b_{2,2} & \dots & b_{2,k}\\ & & .\\ & & .\\ b_{n,1} & b_{n,2} & \dots & b_{n,k}𝑏 \end{bmatrix} = \\ \\ \begin{bmatrix} (a_{1,1} \times b_{1,1}) + (a_{1,2} \times b_{2,1}) + \dots + (a_{1,n} \times b_{n,1}) & \dots & \\ . & \\ . & \\ \end{bmatrix} \end{align*}
Why it happens#
consider that we have a customer who buys certain items
customer |
apple |
banana |
egg |
---|---|---|---|
customer1 |
3 |
4 |
2 |
these items have different rates on different days of the week.
item |
Mon |
Tue |
Wed |
Thu |
Fri |
Sat |
Sun |
---|---|---|---|---|---|---|---|
apple |
13 |
9 |
10 |
12 |
11 |
10 |
8 |
banana |
8 |
7 |
5 |
6 |
8 |
4 |
7 |
egg |
6 |
4 |
2 |
3 |
5 |
6 |
7 |
now actually how much money the customer had spent on each day can be calculated by multiplying, for example on Monday 3 apples of 13 Rs., 4 bananas of 8 Rs., 2 eggs of 6 Rs. In total (3 * 13) + (4 * 8) + (2 * 6) = 83
[4]:
A = np.array([
[ 3, 4, 2 ]
])
B = np.array([
[ 13, 9, 10, 12, 11, 10, 8 ],
[ 8 , 7, 5 , 6 , 8 , 4 , 7 ],
[ 6 , 4, 2 , 3 , 5 , 6 , 7 ]
])
A @ B
[4]:
array([[83, 63, 54, 66, 75, 58, 66]])
It shows that the customer with same buying pattern for all days in week then the first day he spent 83 Rs. Second day 63 Rs. and so on.
now lets say we have mulitple customers, with different buying patterns
[5]:
A = np.array([
[ 3, 4, 2 ],
[ 1, 1, 1 ],
[ 2, 4, 5 ]
])
B = np.array([
[ 13, 9, 10, 12, 11, 10, 8 ],
[ 8 , 7, 5 , 6 , 8 , 4 , 7 ],
[ 6 , 4, 2 , 3 , 5 , 6 , 7 ]
])
A @ B
[5]:
array([[83, 63, 54, 66, 75, 58, 66],
[27, 20, 17, 21, 24, 20, 22],
[88, 66, 50, 63, 79, 66, 79]])
this shows total money spent on week days, of all three customers.