title: NumPy append vs concatenate
body: <p>What is the difference between NumPy <code>append</code> and <code>concatenate</code>?</p>
  
  <p>My observation is that <code>concatenate</code> is a bit faster and <code>append</code> flattens the array if axis is not specified.</p>
  
  <pre><code>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])
  </code></pre>