In this article, let us discuss how to generate a 2-D Gaussian array using NumPy. To create a 2 D Gaussian array using the Numpy python module.
Functions used:
- numpy.meshgrid()– It is used to create a rectangular grid out of two given one-dimensional arrays representing the Cartesian indexing or Matrix indexing.
Syntax:
numpy.meshgrid(*xi, copy=True, sparse=False, indexing=’xy’)
- numpy.linspace()– returns number spaces evenly w.r.t interval.
Syntax:
numpy.linspace(start, stop, num = 50, endpoint = True, retstep = False, dtype = None)
- numpy.exp()– this mathematical function helps the user to calculate the exponential of all the elements in the input array.
Syntax:
numpy.exp(array, out = None, where = True, casting = ‘same_kind’, order = ‘K’, dtype = None)
Example 1:
Python3
# Importing Numpy package import numpy as np # sigma(standard deviation) and muu(mean) are the parameters of gaussian def gaussuian_filter(kernel_size, sigma = 1 , muu = 0 ): # Initializing value of x,y as grid of kernel size # in the range of kernel size x, y = np.meshgrid(np.linspace( - 1 , 1 , kernel_size), np.linspace( - 1 , 1 , kernel_size)) dst = np.sqrt(x * * 2 + y * * 2 ) # lower normal part of gaussian normal = 1 / ( 2 , 0 * np.pi * sigma * * 2 ) # Calculating Gaussian filter gauss = np.exp( - ((dst - muu) * * 2 / ( 2.0 * sigma * * 2 ))) * normal kernel_size = 5 gaussian = gaussian_filter(kernel_size) print ( "gaussian filter of{} X {} :" . format (kernel_size,kernel_size)) print (gaussian) |
Output:
gaussian filter of5 X 5 : [[0.00291502 0.01306423 0.02153928 0.01306423 0.00291502] [0.01306423 0.05854983 0.09653235 0.05854983 0.01306423] [0.02153928 0.09653235 0.15915494 0.09653235 0.02153928] [0.01306423 0.05854983 0.09653235 0.05854983 0.01306423] [0.00291502 0.01306423 0.02153928 0.01306423 0.00291502]]
Example 2:
Python3
# Importing Numpy package import numpy as np # sigma(standard deviation) and muu(mean) are the parameters of gaussian def gaussuian_filter(kernel_size, sigma = 1 , muu = 0 ): # Initializing value of x,y as grid of kernel size # in the range of kernel size x, y = np.meshgrid(np.linspace( - 2 , 2 , kernel_size), np.linspace( - 2 , 2 , kernel_size)) dst = np.sqrt(x * * 2 + y * * 2 ) # lower normal part of gaussian normal = 1 / ( 2 , 0 * np.pi * sigma * * 2 ) # Calculating Gaussian filter gauss = np.exp( - ((dst - muu) * * 2 / ( 2.0 * sigma * * 2 ))) * normal kernel_size = 3 gaussian = gaussian_filter(kernel_size = 3 ) print ( "gaussian filter of{} X {} :" . format (kernel_size, kernel_size)) print (gaussian) |
Output:
gaussian filter of3 X 3 : [[0.05854983 0.09653235 0.05854983] [0.09653235 0.15915494 0.09653235] [0.05854983 0.09653235 0.05854983]]