numpy.ndarray.copy#
method
- ndarray.copy(order='C')#
Return a copy of the array.
- Parameters:
- order{‘C’, ‘F’, ‘A’, ‘K’}, optional
Controls the memory layout of the copy. ‘C’ means C-order,‘F’ means F-order, ‘A’ means ‘F’ ifa is Fortran contiguous,‘C’ otherwise. ‘K’ means match the layout ofa as closelyas possible. (Note that this function and
numpy.copy
are verysimilar but have different default values for their order=arguments, and this function always passes sub-classes through.)
See also
numpy.copy
Similar function with different default behavior
numpy.copyto
Notes
This function is the preferred method for creating an array copy. Thefunction
numpy.copy
is similar, but it defaults to using order ‘K’,and will not pass sub-classes through by default.Examples
>>>importnumpyasnp>>>x=np.array([[1,2,3],[4,5,6]],order='F')
>>>y=x.copy()
>>>x.fill(0)
>>>xarray([[0, 0, 0], [0, 0, 0]])
>>>yarray([[1, 2, 3], [4, 5, 6]])
>>>y.flags['C_CONTIGUOUS']True
For arrays containing Python objects (e.g. dtype=object),the copy is a shallow one. The new array will contain thesame object which may lead to surprises if that object canbe modified (is mutable):
>>>a=np.array([1,'m',[2,3,4]],dtype=object)>>>b=a.copy()>>>b[2][0]=10>>>aarray([1, 'm', list([10, 3, 4])], dtype=object)
To ensure all elements within an
object
array are copied,usecopy.deepcopy
:>>>importcopy>>>a=np.array([1,'m',[2,3,4]],dtype=object)>>>c=copy.deepcopy(a)>>>c[2][0]=10>>>carray([1, 'm', list([10, 3, 4])], dtype=object)>>>aarray([1, 'm', list([2, 3, 4])], dtype=object)