Efficient summed Area Table Calculation with Numpy

前端 未结 1 752
予麋鹿
予麋鹿 2021-01-18 22:00

I\'m trying to calculate a summed area table of a feature count matrix using python and numpy. Currently I\'m using the following code:

def summed_area_table         


        
相关标签:
1条回答
  • 2021-01-18 22:37

    There's a NumPy function cumsum for cumulative sums. Applying it twice yields the desired table:

    import numpy as np
    
    A = np.random.randint(0, 10, (3, 4))
    
    print A
    print A.cumsum(axis=0).cumsum(axis=1)
    

    Output:

    [[7 4 7 2]
     [6 9 9 5]
     [6 6 7 6]]
    [[ 7 11 18 20]
     [13 26 42 49]
     [19 38 61 74]]
    

    Performance analysis: (https://stackoverflow.com/a/25351344/3419103)

    import numpy as np
    import time
    
    A = np.random.randint(0, 10, (3200, 1400))
    
    t = time.time()
    S = A.cumsum(axis=0).cumsum(axis=1)
    print np.round_(time.time() - t, 3), 'sec elapsed'
    

    Output:

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