Binning of data along one axis in numpy Binning of data along one axis in numpy numpy numpy

Binning of data along one axis in numpy


You could use np.apply_along_axis:

x = np.array([range(20), range(1, 21), range(2, 22)])nbins = 2>>> np.apply_along_axis(lambda a: np.histogram(a, bins=nbins)[0], 1, x)array([[10, 10],       [10, 10],       [10, 10]])

The main advantage (if any) is that it's slightly shorter, but I wouldn't expect much of a performance gain. It's possibly marginally more efficient in the assembly of the per-row results.


I was a bit confused by the lambda in Ami's solution so I expanded it out to show what it's doing:

def hist_1d(a):    return np.histogram(a, bins=bins)[0]counts = np.apply_along_axis(hist_1d, axis=1, arr=x)


You have to use numpy.histogramdd specifically meant for your problem