Skip to main content
`Ctrl`+`K`

# numpy.copy

numpy.copy(a, order='K', subok=False)

  Return an array copy of the given object.

  Parameters:
    a array_like

      Input data.

    order{‘C’, ‘F’, ‘A’, ‘K’}, optional

      Controls the memory layout of the copy. ‘C’ means C-order, ‘F’ means F-order, ‘A’ means ‘F’ if a is Fortran contiguous, ‘C’ otherwise. ‘K’ means match the layout of a as closely as possible. (Note that this function and `ndarray.copy` are very similar, but have different default values for their order= arguments.)

    subok bool, optional

      If True, then sub-classes will be passed-through, otherwise the returned array will be forced to be a base-class array (defaults to False).

  Returns:
    arr ndarray

      Array interpretation of a.

  See also

  `ndarray.copy`

    Preferred method for creating an array copy

  Notes

  This is equivalent to:

      >>> np.array(a, copy=True)

  The copy made of the data is shallow, i.e., for arrays with object dtype, the new array will point to the same objects. See Examples from `ndarray.copy`.

  Examples

      >>> import numpy as np

  Create an array x, with a reference y and a copy z:

      >>> x = np.array([1, 2, 3])
      >>> y = x
      >>> z = np.copy(x)

  Note that, when we modify x, y changes, but not z:

      >>> x[0] = 10
      >>> x[0] == y[0]
      True
      >>> x[0] == z[0]
      False

  Note that, np.copy clears previously set WRITEABLE=False flag.

      >>> a = np.array([1, 2, 3])
      >>> a.flags["WRITEABLE"] = False
      >>> b = np.copy(a)
      >>> b.flags["WRITEABLE"]
      True
      >>> b[0] = 3
      >>> b
      array([3, 2, 3])