# numpy.insert

numpy.insert(arr, obj, values, axis=None)

  Insert values along the given axis before the given indices.

  Parameters:
    arr array_like

      Input array.

    obj int, slice or sequence of ints

      Object that defines the index or indices before which values is inserted.

      New in version 1.8.0.

      Support for multiple insertions when obj is a single scalar or a sequence with one element (similar to calling insert multiple times).

    values array_like

      Values to insert into arr. If the type of values is different from that of arr, values is converted to the type of arr. values should be shaped so that `arr[...,obj,...] = values` is legal.

    axis int, optional

      Axis along which to insert values. If axis is None then arr is flattened first.

  Returns:
    out ndarray

      A copy of arr with values inserted. Note that `insert` does not occur in-place: a new array is returned. If axis is None, out is a flattened array.

  See also

  `append`

    Append elements at the end of an array.

  `concatenate`

    Join a sequence of arrays along an existing axis.

  `delete`

    Delete elements from an array.

  Notes

  Note that for higher dimensional inserts `obj=0` behaves very different from `obj=[0]` just like `arr[:,0,:] = values` is different from `arr[:,[0],:] = values`.

  Examples

      >>> a = np.array([[1, 1], [2, 2], [3, 3]])
      >>> a
      array([[1, 1],
             [2, 2],
             [3, 3]])
      >>> np.insert(a, 1, 5)
      array([1, 5, 1, ..., 2, 3, 3])
      >>> np.insert(a, 1, 5, axis=1)
      array([[1, 5, 1],
             [2, 5, 2],
             [3, 5, 3]])

  Difference between sequence and scalars:

      >>> np.insert(a, [1], [[1],[2],[3]], axis=1)
      array([[1, 1, 1],
             [2, 2, 2],
             [3, 3, 3]])
      >>> np.array_equal(np.insert(a, 1, [1, 2, 3], axis=1),
      ...                np.insert(a, [1], [[1],[2],[3]], axis=1))
      True

      >>> b = a.flatten()
      >>> b
      array([1, 1, 2, 2, 3, 3])
      >>> np.insert(b, [2, 2], [5, 6])
      array([1, 1, 5, ..., 2, 3, 3])

      >>> np.insert(b, slice(2, 4), [5, 6])
      array([1, 1, 5, ..., 2, 3, 3])

      >>> np.insert(b, [2, 2], [7.13, False]) # type casting
      array([1, 1, 7, ..., 2, 3, 3])

      >>> x = np.arange(8).reshape(2, 4)
      >>> idx = (1, 3)
      >>> np.insert(x, idx, 999, axis=1)
      array([[  0, 999,   1,   2, 999,   3],
             [  4, 999,   5,   6, 999,   7]])