sciPy stats.binned_statistic_2d () function | python



stats.binned_statistic_2d (arr1, arr2, values, statistic = & # 39; mean & # 39 ;, bins = 10, range = None) calculates the statistic value for given two-dimensional data. 
It works in a similar way to histogram2d. Since the histogram function makes bins and counts no. points in each basket; this function calculates the sum, average, median, count, or other statistics of values ​​for each bin.

Parameters:
arr1: [array_like] input array to be binned along the first dimension.
arr2: [array_like] input array to be binned along the second dimension.
values: [array_like] on which stats to be calculated.
statistics: Statistics to compute {mean, count, median, sum, function}. Default is mean.
bin: [int or scalars] If bins is an int, it defines the number of equal-width bins in the given range (10, by default). If bins is a sequence, it defines the bin edges.
range: (float, float) Lower and upper range of the bins and if not provided, range is from x.max () to x.min ().

Results: Statistics value for each bin; bin edges along first and second dimension; bin number.

Code # 1:

# stats.binned_statistic_2d () method

import numpy as np

from scipy import stats

 

x = np.random.rand ( 10 )

y = np.random.rand ( 10 )

 

z = np.arange ( 10 )

 

print ( "x:" , x)

print ( "y : " , y)

print ( "z:" , z)

  
# amount

print ( "binned_statistic_2d for count:"

stats.binned_statistic_2d (x, y, values ​​ = z , 

statistic = ` count` , bins = [ 5 , 5 ]))

Output:

x:
[0.31218238 0.86791445 0.42763346 0.79798587 0.91361299 0.09005856
0.54419846 0.18973948 0.67016378 0.8083121]

y:
[0.35959238 0.69265819 0.18751529 0.98863414 0.97810927 0.24054104
0.76764562 0.60635485 0.61551806 0.63884672]

1: 2 3 4 5 6 7 8 9]

binned_statistic_2d for count: BinnedStatistic2dResult (statistic = array ([[1., 0., 1., 0., 0.],
[0 ., 1., 0., 0., 0.],
[1., 0., 0., 1., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 1., 1., 2.]]), x_edge = array ([0.09005856, 0.25476945, 0.41948033, 0.58419122, 0.74890211,
0.91361299 ]), y_edg e = array ([0.18751529, 0.34773906, 0.50796283, 0.6681866, 0.82841037,
0.98863414]), binnumber = array ([16, 39, 22, 40, 40, 8, 25, 10, 31, 38], dtype = int64))

Code # 2:

# stats.binned_statistic_2d () method

import numpy as np

from scipy import stats

 

x = np.random.rand ( 10 )

y = np.random.rand ( 10 )

z = np.arange ( 10 )

 
# greedy

print ( "binned_statistic_2d for mean: "

  stats.binned_statistic_2d ( x, y, values ​​ = z,

statistic = ` mean` , bins = [ 5 , 5 ])) 

Output:

binned_statistic_2d for mean: BinnedStatistic2dResult (statistic = array ([[5., nan, 7., nan, nan],
[nan, 0., nan, nan, nan],
[2., nan, nan, 6., nan],
[nan, nan, 8., nan, nan],
[nan, nan, 9., 1., 3.5]]), x_edge = array ([0.09005856, 0.25476945, 0.41948033, 0.58419122, 0.74890211,
0.91361299]), y_edge = array ([0.18751529, 0.34773906, 0.50796283, 0.6681866, 0.82841037,
0.98863414]), binnumber = array ([16, 39, 22, 40, 40, 8, 25, 10, 31, 38], dtype = int64))