Examples of how to perform mathematical operations on array elements ("element-wise operations") in python:
Table of contents
- Add a number to all the elements of an array
- Subtract a number to all the elements of an array
- Multiply a number to all the elements of an array
- Multiply array elements by another array elements
- Square number of each array elements
- Root square number of each array elements
- Using a python function
- Element-wise matrix product
- Numpy multiply function (rows)
- Numpy multiply function (columns)
- References
Add a number to all the elements of an array
Let's consider the following array:
\begin{equation}
A = \left( \begin{array}{ccc}
0 & 1 & 2 \\
3 & 4 & 5 \\
6 & 7 & 8
\end{array}\right)
\end{equation}
>>> import numpy as np
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
to add a constant number, a solution is to do:
>>> A + 1
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
or
>>> B = np.ones(9).reshape(3,3)
>>> B
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> A + B
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
Another example:
>>> B = np.arange(10,19).reshape(3,3)
>>> B
array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18]])
>>> A + B
array([[10, 12, 14],
[16, 18, 20],
[22, 24, 26]])
Subtract a number to all the elements of an array
Example with a subtraction:
>>> import numpy as np
>>> A = np.arange(9).reshape(3,3)
to subtract a number to all the elements of an array, a solution is to do:
>>> A - 1
array([[-1, 0, 1],
[ 2, 3, 4],
[ 5, 6, 7]])
or
>>> B = np.ones(9).reshape(3,3)
>>> A - B
array([[-1., 0., 1.],
[ 2., 3., 4.],
[ 5., 6., 7.]])
Another example
>>> B = np.arange(10,19).reshape(3,3)
>>> B
array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18]])
>>> A - B
array([[-10, -10, -10],
[-10, -10, -10],
[-10, -10, -10]])
Multiply a number to all the elements of an array
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> A * 2
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
Multiply array elements by another array elements
Note: arrays with same size
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> B = np.arange(10,19).reshape(3,3)
>>> B
array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18]])
>>> A * B
array([[ 0, 11, 24],
[ 39, 56, 75],
[ 96, 119, 144]])
Square number of each array elements
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> A ** 2
array([[ 0, 1, 4],
[ 9, 16, 25],
[36, 49, 64]])
Root square number of each array elements
To get the root square of each array elements, a solution is to use the numpy function sqrt()
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> A ** 2
array([[ 0, 1, 4],
[ 9, 16, 25],
[36, 49, 64]])
>>> np.sqrt(A**2)
array([[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]])
Using a python function
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> def my_custom_function(x):
... return x**2 + 1
...
>>> my_custom_function(A)
array([[ 1, 2, 5],
[10, 17, 26],
[37, 50, 65]])
Note: to use well know functions such as sinus, cosinus, etc do not use the math module but numpy (numpy Mathematical functions):
>>> import math
>>> def my_custom_function(x):
... return math.sin(x)
...
>>> my_custom_function(A)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in my_custom_function
TypeError: only length-1 arrays can be converted to Python scalars
just replace math.sin(x) by np.sin(x)
>>> def my_custom_function(x):
... return np.sin(x)
...
>>> my_custom_function(A)
array([[ 0. , 0.84147098, 0.90929743],
[ 0.14112001, -0.7568025 , -0.95892427],
[-0.2794155 , 0.6569866 , 0.98935825]])
Another example
>>> np.sin(A)
array([[ 0. , 0.84147098, 0.90929743],
[ 0.14112001, -0.7568025 , -0.95892427],
[-0.2794155 , 0.6569866 , 0.98935825]])
Element-wise matrix product
>>> import numpy as np
>>> A = np.arange(4).reshape(2,2)
>>> A = np.array([A[:],A[:]*2,A[:]*3])
>>> A
array([[[0, 1],
[2, 3]],
[[0, 2],
[4, 6]],
[[0, 3],
[6, 9]]])
>>> B = np.array((4,6))
>>> B
array([4, 6])
>>> B @ A
array([[12, 22],
[24, 44],
[36, 66]])
Another example
>>> A = np.arange(3).reshape(3,1)
>>> A
array([[0],
[1],
[2]])
>>> B = np.arange(3).reshape(1,3)
>>> B
array([[0, 1, 2]])
>>> B @ A
array([[5]])
Numpy multiply function (rows)
>>> A = np.arange(9).reshape(3,3)
>>> A
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.multiply(A,B)
array([[ 0, 1, 4],
[ 0, 4, 10],
[ 0, 7, 16]])
Numpy multiply function (columns)
>>> C = B[:,np.newaxis]
>>> C
array([[0],
[1],
[2]])
>>> np.multiply(A,C)
array([[ 0, 0, 0],
[ 3, 4, 5],
[12, 14, 16]])
References
Links | Site |
---|---|
Introduction to Python Operator | data-flair.training |
numpy.multiply | stackoverflow |
Elementwise multiplication of NumPy arrays of matrices | stackoverflow |
How to get element-wise matrix multiplication (Hadamard product) in numpy? | stackoverflow |
numpy Mathematical functions | docs.scipy.org |
What is the purpose of meshgrid in Python / NumPy? | stackoverflow |
How to merge mesh grid points from two rectangles in python? | stackoverflow |