scipy.stats.variation(arr, axis = None)
function computes the coefficient of variation. It is defined as the ratio of standard deviation to mean.
Parameters :
arr : [array_like] input array.
axis : [int or tuples of int] axis along which we want to calculate the coefficient of variation.
-> axis = 0 coefficient of variation along the column.
-> axis = 1 coefficient of variation working along the row.Results : Coefficient of variation of the array with values along specified axis.
Code #1: Use of variation()
from scipy.stats import variation import numpy as np arr = np.random.randn( 5 , 5 ) print ( "array : \n" , arr) # rows: axis = 0, cols: axis = 1 print ( "\nVariation at axis = 0: \n" , variation(arr, axis = 0 )) print ( "\nVariation at axis = 1: \n" , variation(arr, axis = 1 )) |
array : [[-1.16536706 -1.29744691 -0.39964651 2.14909277 -1.00669835] [ 0.79979681 0.91566149 -0.823054 0.9189682 -0.01061181] [ 0.9532622 0.38630077 -0.79026789 -0.70154086 0.79087801] [ 0.53553389 1.46409899 1.89903817 -0.35360202 -0.14597738] [-1.53582875 -0.50077039 -0.23073327 0.32457064 -0.43269088]] Variation at axis = 0: [-12.73042404 5.10272979 -14.6476392 2.15882202 -3.64031032] Variation at axis = 1: [-3.73200773 1.90419038 5.77300406 1.29451485 -1.27228112]
Code #2: How to implement without variation()
import numpy as np arr = np.random.randn( 5 , 5 ) print ( "array : \n" , arr) # this function works similar to variation() cv = lambda x: np.std(x) / np.mean(x) var1 = np.apply_along_axis(cv, axis = 0 , arr = arr) print ( "\nVariation at axis = 0: \n" , var1) var2 = np.apply_along_axis(cv, axis = 1 , arr = arr) print ( "\nVariation at axis = 0: \n" , var2) |
array : [[ 0.51268414 -1.93697931 0.41573223 2.14911168 0.15036631] [-0.50407207 1.51519879 -0.42217231 -1.09609322 1.93184432] [-1.07727163 0.27195529 -0.1308108 -1.75406388 0.94046395] [ 1.23283059 -0.03112461 0.59725109 0.06671002 -0.97537666] [ 1.1233506 0.97658799 -1.10309113 -1.33142901 -0.28470146]] Variation at axis = 0: [ 3.52845174 7.40891024 -4.74078192 -3.57928544 2.85092056] Variation at axis = 0: [ 5.04874565 4.22763514 -2.74104828 4.10772935 -8.24126977]