Open In App

sciPy stats.variation() function | Python

Last Updated : 13 Feb, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

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))


Output:

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)


Output:

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]


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads