Binning of data along one axis in numpy

后端 未结 3 858
感情败类
感情败类 2021-01-02 01:56

I have a large two dimensional array arr which I would like to bin over the second axis using numpy. Because np.histogram flattens the array I\'m c

相关标签:
3条回答
  • 2021-01-02 01:59

    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)
    
    0 讨论(0)
  • 2021-01-02 02:08

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

    0 讨论(0)
  • 2021-01-02 02:21

    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.

    0 讨论(0)
提交回复
热议问题