sciPy stats.variation() function | Python (original) (raw)
Last Updated : 13 Feb, 2019
**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()
Python3 1== `
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()
Python3 1== `
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]