NumPy append vs concatenate

46,411

np.append uses np.concatenate:

def append(arr, values, axis=None):
    arr = asanyarray(arr)
    if axis is None:
        if arr.ndim != 1:
            arr = arr.ravel()
        values = ravel(values)
        axis = arr.ndim-1
    return concatenate((arr, values), axis=axis)
Share:
46,411
Jana
Author by

Jana

Updated on March 11, 2020

Comments

  • Jana
    Jana about 3 years

    What is the difference between NumPy append and concatenate?

    My observation is that concatenate is a bit faster and append flattens the array if axis is not specified.

    In [52]: print a
    [[1 2]
     [3 4]
     [5 6]
     [5 6]
     [1 2]
     [3 4]
     [5 6]
     [5 6]
     [1 2]
     [3 4]
     [5 6]
     [5 6]
     [5 6]]
    In [53]: print b
    [[1 2]
     [3 4]
     [5 6]
     [5 6]
     [1 2]
     [3 4]
     [5 6]
     [5 6]
     [5 6]]
    In [54]: timeit -n 10000 -r 5 np.concatenate((a, b))
    10000 loops, best of 5: 2.05 µs per loop
    In [55]: timeit -n 10000 -r 5 np.append(a, b, axis = 0)
    10000 loops, best of 5: 2.41 µs per loop
    In [58]: np.concatenate((a, b))
    Out[58]: 
    array([[1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [5, 6]])
    In [59]: np.append(a, b, axis = 0)
    Out[59]: 
    array([[1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [1, 2],
           [3, 4],
           [5, 6],
           [5, 6],
           [5, 6]])
    In [60]: np.append(a, b)
    Out[60]: 
    array([1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5,
           6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6, 1, 2, 3, 4, 5, 6, 5, 6, 5, 6])