cf.Field.equals

Field.equals(other, rtol=None, atol=None, ignore_fill_value=False, traceback=False, ignore=('Conventions', ))[source]

True if two fields are equal, False otherwise.

Two fields are equal if ...

Note that a field may be equal to a single element field list, for example f.equals(f[0:1]) and f[0:1].equals(f) are always True.

See also

cf.FieldList.equals, cf.FieldList.set_equals

Examples 1:
>>> b = f.equals(g)
Parameters:
other: object

The object to compare for equality.

atol: float, optional

The absolute tolerance for all numerical comparisons, By default the value returned by the cf.ATOL function is used.

rtol: float, optional

The relative tolerance for all numerical comparisons, By default the value returned by the cf.RTOL function is used.

ignore_fill_value: bool, optional

If True then data arrays with different fill values are considered equal. By default they are considered unequal.

traceback: bool, optional

If True then print a traceback highlighting where the two fields differ.

ignore: tuple, optional

The names of CF properties to omit from the comparison. By default, the CF Conventions property is omitted.

Returns:
out: bool

Whether or not the two fields are equal.

Examples 2:
>>> f.Conventions
'CF-1.0'
>>> g = f.copy()
>>> g.Conventions = 'CF-1.6'
>>> f.equals(g)
True

In the following example, two fields differ only by the long name of their time coordinates. The traceback shows that they differ in their domains, that they differ in their time coordinates and that the long name could not be matched.

>>> g = f.copy()
>>> g.coord('time').long_name += ' different'
>>> f.equals(g, traceback=True)
Domain: Different coordinate: <CF Coordinate: time(12)>
Field: Different domain properties: <CF Domain: (128, 1, 12, 64)>, <CF Domain: (128, 1, 12, 64)>
False