Python 3, an Illustrated Tour Transcripts
Chapter: Classes and inheritance
Lecture: Matrix Multiplication
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Pep 465 introduced what's called the matrix multiplication operator this came out in Python 3.5,
0:08
from the PEP we read: in numerical code there are two important operations, which compete for use of Python's asterisk operator
0:16
element wise multiplication and matrix multiplication. Here's an example of doing matrix multiplication.
0:24
If you're familiar with linear algebra, this is a common operation. Here I'm importing the numpy library and I'm creating 2 arrays
0:31
and then I'm looping over the pairs of elements and multiplying them together and summing the result.
0:38
This is doing what's called matrix multiplication. It gives me in this case 285 as the result. This PEP introduced an operation to do that
0:46
and we can use the @ sign around the two arrays and that also gives us the same result 285. Note that this is different than multiplication,
0:56
if we simply multiply the array in numpy this is going to do what is called element wise multiplication
1:02
and in that case, it will multiply every element in the array by 10, it won't do multiplication of the whole element by 10 per se.
1:12
If you want to have a class that implements matrix multiplication you just need to implement the __matmul__ operator.
1:21
Again, in Python, everything is an object and there are various protocols
1:25
and if we follow certain protocols, we can take advantage of certain behavior. In this case, if we want to be able to use the @ sign
1:32
we can Implement __matmul__. This case is pretty dumb example it simply ignores the other that's passed in there and returns 42,
1:41
but you could do something more smart if you want to. If you're not familiar with dunder methods
1:46
what's happening is self here would be a and b would come in as other and so inside of that method there, you could do whatever you wanted to
1:56
with them and you could Implement that operation.