cf.Field.derivative¶
-
Field.
derivative
(axis, wrap=None, one_sided_at_boundary=False, inplace=False, i=False, cyclic=None)[source]¶ Calculate the derivative along the specified axis.
The derivative is calculated using centred finite differences apart from at the boundaries (see the one_sided_at_boundary parameter). If missing values are present then missing values will be returned at all points where a centred finite difference could not be calculated.
- Parameters
- axis:
The axis, defined by that which would be selected by passing the given axis description to a call of the field construct’s
domain_axis
method. For example, for a value of'X'
, the domain axis construct returned byf.domain_axis('X')
is selected.- wrap:
bool
, optional Whether the axis is cyclic or not. By default wrap is set to the result of this call to the field construct’s
iscyclic
method:f.iscyclic(axis)
. If the axis is cyclic then centred differences at one boundary will always use values from the other boundary, regardless of the setting of one_sided_at_boundary.- one_sided_at_boundary:
bool
, optional If True, and the field is not cyclic or wrap is True, then one-sided finite differences are calculated at the non-cyclic boundaries. By default missing values are set at non-cyclic boundaries.
- inplace:
bool
, optional If True then do the operation in-place and return
None
.- i: deprecated at version 3.0.0
Use the inplace parameter instead.
- Returns
Examples
>>> f = cf.example_field(0) >>> print(f.dimension_coordinate('X').array) [ 22.5 67.5 112.5 157.5 202.5 247.5 292.5 337.5] >>> print(f.dimension_coordinate('X').cellsize.array) [45. 45. 45. 45. 45. 45. 45. 45.] >>> f[...] = [45, 90, 135, 180, 225, 270, 315, 360] >>> f.iscyclic('X') True >>> print(f.array) [[ 45. 90. 135. 180. 225. 270. 315. 360.] [ 45. 90. 135. 180. 225. 270. 315. 360.] [ 45. 90. 135. 180. 225. 270. 315. 360.] [ 45. 90. 135. 180. 225. 270. 315. 360.] [ 45. 90. 135. 180. 225. 270. 315. 360.]] >>> print(f.derivative('X').array) [[-3. 1. 1. 1. 1. 1. 1. -3.] [-3. 1. 1. 1. 1. 1. 1. -3.] [-3. 1. 1. 1. 1. 1. 1. -3.] [-3. 1. 1. 1. 1. 1. 1. -3.] [-3. 1. 1. 1. 1. 1. 1. -3.]] >>> print(f.derivative('X', wrap=False).array) [[-- 1.0 1.0 1.0 1.0 1.0 1.0 --] [-- 1.0 1.0 1.0 1.0 1.0 1.0 --] [-- 1.0 1.0 1.0 1.0 1.0 1.0 --] [-- 1.0 1.0 1.0 1.0 1.0 1.0 --] [-- 1.0 1.0 1.0 1.0 1.0 1.0 --]] >>> print( ... f.derivative('X', wrap=False, one_sided_at_boundary=True).array ... ) [[1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1.]]