xarray.DataArray.copy#
- DataArray.copy(deep=True, data=None)[source]#
Returns a copy of this array.
If deep=True, a deep copy is made of the data array. Otherwise, a shallow copy is made, and the returned data array’s values are a new view of this data array’s values.
Use data to create a new object with the same structure as original but entirely new data.
- Parameters:
deep (
bool
, optional) – Whether the data array and its coordinates are loaded into memory and copied onto the new object. Default is True.data (array_like, optional) – Data to use in the new object. Must have same shape as original. When data is used, deep is ignored for all data variables, and only used for coords.
- Returns:
copy (
DataArray
) – New object with dimensions, attributes, coordinates, name, encoding, and optionally data copied from original.
Examples
Shallow versus deep copy
>>> array = xr.DataArray([1, 2, 3], dims="x", coords={"x": ["a", "b", "c"]}) >>> array.copy() <xarray.DataArray (x: 3)> array([1, 2, 3]) Coordinates: * x (x) <U1 'a' 'b' 'c' >>> array_0 = array.copy(deep=False) >>> array_0[0] = 7 >>> array_0 <xarray.DataArray (x: 3)> array([7, 2, 3]) Coordinates: * x (x) <U1 'a' 'b' 'c' >>> array <xarray.DataArray (x: 3)> array([7, 2, 3]) Coordinates: * x (x) <U1 'a' 'b' 'c'
Changing the data using the
data
argument maintains the structure of the original object, but with the new data. Original object is unaffected.>>> array.copy(data=[0.1, 0.2, 0.3]) <xarray.DataArray (x: 3)> array([0.1, 0.2, 0.3]) Coordinates: * x (x) <U1 'a' 'b' 'c' >>> array <xarray.DataArray (x: 3)> array([7, 2, 3]) Coordinates: * x (x) <U1 'a' 'b' 'c'
See also