In this tutorial, I’ll explain how to use the Numpy multiply function – AKA np.multiply – to multiply matrices together.
I’ll explain the syntax of np.multiply, how the function works, and how to use it.
If you need something specific, you can click on any of the following links.
Table of Contents:
- Introduction to Numpy Multiply
- The syntax of np.multiply
- Examples: how to multiply matrices together
Ok. Let’s get to it.
A Quick Introduction to Numpy Multiply
As you might have guessed, the Numpy multiply function multiplies matrices together.
You can use np.multiply to multiply two same-sized arrays together. This computes something called the Hadamard product. In the Hadamard product, the two inputs have the same shape, and the output contains the element-wise product of each of the input values.
You can also use np.multiply to multiply a matrix by a vector. If you multiply a matrix by a vector (e.g., a multi-dimensional array by a lower-dimensional array), Numpy will perform broadcasting.
Both techniques are pretty simple, and I’ll show you examples of both.
But first, let’s take a look at the syntax.
The syntax of np.multiply
The syntax for the Numpy multiply function is simple:
Remember that this syntax assumes that you’ve imported Numpy with the code import numpy as np
.
Format of the input arrays
Notice that there are two input arguments to the function, which I’ve named arr1
and arr1
. These should be Numpy arrays or array-like objects such as Python lists.
Also, there are some restrictions on the shape of the input array.
One way to use np.multiply, is to have the two input arrays be the exact same shape (i.e., they have the same number of rows and columns). If the input arrays have the same shape, then the Numpy multiply function will multiply the values of the inputs pairwise.
Alternatively, if the two input arrays are not the same size, then one of the arrays must have a shape that can be broadcasted across the other array.
Broadcasing is somewhat complicated to understand if you’re a Numpy beginner, so I’ll show you an example in the examples section.
Additional parameters
In addition to the two input arguments, there are a few optional parameters for the Numpy multiply function:
- out
- where
These are somewhat rarely used, but so I won’t explain them here.
Output of np.multiply
The output of np.multiply is a new Numpy array that contains the element-wise product of the input arrays.
Having said that, there is a special case for scalars: if both inputs to np.multiply are scalar values, then the output will be a scalar.
Examples: how to calculate multiply Numpy arrays together
Now, let’s take a look at some examples.
Examples:
- Use Numpy multiply on two scalars
- Use Numpy multiply with one array and one scalar
- Multiply two same-sized Numpy arrays
- Multiply differently sized Numpy arrays with broadcasting (i.e., multiply a matrix by a vector)
Preliminary code: Import Numpy and Create Arrays
Before you run any of the examples, you’ll need to run some preliminary code.
Specifically, before you run any of the examples, you’ll need to import Numpy and you’ll need to create some Numpy arrays that we can work with.
Import Numpy
First, we nee to import Numpy before we can use any of the Numpy functions.
You can do that with the following code:
import numpy as np
Create Arrays
Next, we need to create some numpy arrays that we can operate on.
Here, we’re going to create several Numpy objects:
- a 1-dimensional ‘vector’ of numbers
- a 2-dimensional ‘matrix’ of the numbers from 1 to 9 (ordered)
- a 2-dimensional ‘matrix’ of the numbers from 1 to 9 (randomized)
To do this, we’ll use a few Numpy functions, like the Numpy array function, the Numpy arange function, the Numpy reshape method, and Numpy random choice. (If you’re unsure about what we’re doing here, you should read those other tutorials.)
# CREATE 1D 'VECTOR' vector_1d = np.array([10,20,30]) # CREATE 2D MATRIX OF NUMBERS, 1 TO 9 numbers_1_to_9 = np.arange(start = 1, stop = 10) matrix_2d_ordered = numbers_1_to_9.reshape((3,3)) # CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED np.random.seed(22) matrix_2d_random = np.random.choice(size = (3,3), a = numbers_1_to_9, replace = False)
Once you have Numpy imported and once you’ve created the arrays, you’ll be ready to run the examples.
EXAMPLE 1: Use the Numpy multiply on two scalars
First, we’ll start with the simplest case.
Here, we’ll use np.multiply to multiply two scalar values.
np.multiply(3,4)
OUT:
12
Explanation
Obviously, this is very simple and straight forward.
Here, we’re simply multiplying 3 times 4. The result is 12.
EXAMPLE 2: Multiply an array by a scalar
Next, we’re going to multiply a 2-dimensional Numpy array by a scalar (i.e., we’ll multiply a matrix by a scalar).
np.multiply(matrix_2d_ordered, 2)
OUT:
array([[ 2, 4, 6], [ 8, 10, 12], [14, 16, 18]])
Explanation
So what happened here?
We called np.multiply with two arguments: the Numpy array matrix_2d_ordered
and the scalar value 2.
For the output, np.multiply multiplied every value of matrix_2d_ordered
by 2.
It’s pretty straight forward.
EXAMPLE 3: Multiply two same-sized Numpy arrays
Now, let’s multiply two arrays with the same size.
Here, we’re going to multiply matrix_2d_ordered
with matrix_2d_random
.
np.multiply(matrix_2d_ordered, matrix_2d_random)
OUT:
array([[ 9, 4, 12], [12, 35, 6], [56, 40, 54]])
Explanation
Here, np.multiply is multiplying together the values of each input matrix, element-wise.
The output is a matrix of the same size as the inputs, that contains the element wise product of the values of the input matrices.
(This is known as the Hadamard product.)
EXAMPLE 4: Multiply a matrix by a vector (i.e., broadcasting)
Finally, let’s do one more example.
Here, we’re going to multiply one of our 2-dimensional input arrays by a 1-dimensional array. Effectively, this is like multiplying a matrix by a vector.
np.multiply(matrix_2d_ordered, vector_1d)
OUT:
array([[ 10, 40, 90], [ 40, 100, 180], [ 70, 160, 270]])
Explanation
In this example, we multiplied a 2-dimensional matrix by a 1-dimensional vector. (I.e., we multiplied a 2D Numpy a 1D Numpy array).
When we do this, Numpy performs what is called “broadcasting.” Effectively, it takes the 1D vector, treats it as a row of data, and multiplies that vector by every row in the 2D array.
So it multiplies row 1 of the matrix by the vector, element wise. Then it multiplies row 2 of the matrix by the vector. And so on.
Keep in mind that when you do this, vector must have a shape such that it can be broadcast over the matrix.
Leave your other questions in the comments below
Do you have other questions about how to multiply Numpy arrays? Do you have questions about how to multiply matrices and vectors in Numpy?
If so, leave your questions in the comments section below.
Join our course to learn more about Numpy
In this tutorial, I’ve explained how to multiply arrays in Numpy with np.multiply.
This should help you with array multiplication, but if you really want to learn Numpy, there’s a lot more to learn.
If you’re serious about mastering Numpy, and serious about data science in Python, you should consider joining our premium course called Numpy Mastery.
Numpy Mastery will teach you everything you need to know about Numpy, including:
- How to create Numpy arrays
- How to reshape, split, and combine your Numpy arrays
- What the “Numpy random seed” function does
- How to use the Numpy random functions
- How to perform mathematical operations on Numpy arrays
- and more …
Moreover, this course will show you a practice system that will help you master the syntax within a few weeks. We’ll show you a practice system that will enable you to memorize all of the Numpy syntax you learn. If you have trouble remembering Numpy syntax, this is the course you’ve been looking for.
Find out more here: