Numpy: Subtract 2 numpy arrays row wise

前端 未结 4 1093
被撕碎了的回忆
被撕碎了的回忆 2021-01-14 05:51

I have 2 numpy arrays a and b as below:

a = np.random.randint(0,10,(3,2))
Out[124]: 
array([[0, 2],
       [6, 8],
       [0, 4]])
b = np.random.randint(0,10         


        
4条回答
  •  被撕碎了的回忆
    2021-01-14 06:00

    You can shave a little time off using np.subtract(), and a good bit more using np.concatenate()

    import numpy as np
    import time
    
    start = time.time()
    for i in range(100000):
    
        a = np.random.randint(0,10,(3,2))
        b = np.random.randint(0,10,(2,2))
        c = np.c_[(a - b[0]),(a - b[1])].reshape(3,2,2)
    
    print time.time() - start
    
    start = time.time()
    for i in range(100000):
    
        a = np.random.randint(0,10,(3,2))
        b = np.random.randint(0,10,(2,2))
        #c = np.c_[(a - b[0]),(a - b[1])].reshape(3,2,2)
        c = np.c_[np.subtract(a,b[0]),np.subtract(a,b[1])].reshape(3,2,2)
    
    print time.time() - start
    
    start = time.time()
    for i in range(100000):
    
        a = np.random.randint(0,10,(3,2))
        b = np.random.randint(0,10,(2,2))
        #c = np.c_[(a - b[0]),(a - b[1])].reshape(3,2,2)
        c = np.concatenate([np.subtract(a,b[0]),np.subtract(a,b[1])],axis=1).reshape(3,2,2)
    
    print time.time() - start
    
    >>>
    
    3.14023900032
    3.00368094444
    1.16146492958
    

    reference:

    confused about numpy.c_ document and sample code

    np.c_ is another way of doing array concatenate

提交回复
热议问题