xarray.DataArray.copy

DataArray.copy(deep = True, data = None) → xarray.core.dataarray.DataArray

Returns a copy of this array.

If deep=True, a deep copy is made of the data array. Otherwise, a shallow copy is made, so each variable in the new array’s dataset is also a variable in this array’s dataset.

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

object – New object with dimensions, attributes, coordinates, name, encoding, and optionally data copied from original.

Return type

DataArray

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([1, 2, 3])
Coordinates:
* x        (x) <U1 'a' 'b' 'c'