Good ways to “expand” a numpy ndarray?

后端 未结 6 677
一个人的身影
一个人的身影 2020-12-04 16:43

Are there good ways to \"expand\" a numpy ndarray? Say I have an ndarray like this:

[[1 2]
 [3 4]]

And I want each row to contains more ele

6条回答
  •  余生分开走
    2020-12-04 17:12

    You should use np.column_stack or append

    import numpy as np
    
    p = np.array([ [1,2] , [3,4] ])
    
    p = np.column_stack( [ p , [ 0 , 0 ],[0,0] ] )
    
    p
    Out[277]: 
    array([[1, 2, 0, 0],
           [3, 4, 0, 0]])
    

    Append seems to be faster though:

    timeit np.column_stack( [ p , [ 0 , 0 ],[0,0] ] )
    10000 loops, best of 3: 61.8 us per loop
    
    timeit np.append(p, [[0,0],[0,0]],1)
    10000 loops, best of 3: 48 us per loop
    

    And a comparison with np.c_ and np.hstack [append still seems to be the fastest]:

    In [295]: z=np.zeros((2, 2), dtype=a.dtype)
    
    In [296]: timeit np.c_[a, z]
    10000 loops, best of 3: 47.2 us per loop
    
    In [297]: timeit np.append(p, z,1)
    100000 loops, best of 3: 13.1 us per loop
    
    In [305]: timeit np.hstack((p,z))
    10000 loops, best of 3: 20.8 us per loop
    

    and np.concatenate [that is a even a bit faster than append]:

    In [307]: timeit np.concatenate((p, z), axis=1)
    100000 loops, best of 3: 11.6 us per loop
    

提交回复
热议问题