field

Inheritance diagram of climlab.domain.field
class climlab.domain.field.Field[source]

Bases: numpy.ndarray

Custom class for climlab gridded quantities, called Field.

This class behaves exactly like numpy.ndarray but every object has an attribute called self.domain which is the domain associated with that field (e.g. state variables).

Initialization parameters

An instance of Field is initialized with the following arguments:

Parameters:
  • input_array (array) – the array which the Field object should be initialized with
  • domain (_Domain) – the domain associated with that field (e.g. state variables)

Object attributes

Following object attribute is generated during initialization:

Variables:

domain (_Domain) – the domain associated with that field (e.g. state variables)

Example:
>>> import climlab
>>> import numpy as np
>>> from climlab import domain
>>> from climlab.domain import field

>>> # distribution of state
>>> distr = np.linspace(0., 10., 30)
>>> # domain creation
>>> sfc, atm = domain.single_column()
>>> # build state of type Field
>>> s = field.Field(distr, domain=atm)

>>> print s
[  0.           0.34482759   0.68965517   1.03448276   1.37931034
   1.72413793   2.06896552   2.4137931    2.75862069   3.10344828
   3.44827586   3.79310345   4.13793103   4.48275862   4.82758621
   5.17241379   5.51724138   5.86206897   6.20689655   6.55172414
   6.89655172   7.24137931   7.5862069    7.93103448   8.27586207
   8.62068966   8.96551724   9.31034483   9.65517241  10.        ]

>>> print s.domain
climlab Domain object with domain_type=atm and shape=(30,)

>>> # can slice this and it preserves the domain
>>> #  a more full-featured implementation would have intelligent
>>> #  slicing like in iris
>>> s.shape == s.domain.shape
True
>>> s[:1].shape == s[:1].domain.shape
False

>>> #  But some things work very well. E.g. new field creation:
>>> s2 = np.zeros_like(s)

>>> print s2
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]

>>> print s2.domain
climlab Domain object with domain_type=atm and shape=(30,)
Attributes:
T

Same as self.transpose(), except that self is returned if self.ndim < 2.

base

Base object if memory is from some other object.

ctypes

An object to simplify the interaction of the array with the ctypes module.

data

Python buffer object pointing to the start of the array’s data.

dtype

Data-type of the array’s elements.

flags

Information about the memory layout of the array.

flat

A 1-D iterator over the array.

imag

The imaginary part of the array.

itemsize

Length of one array element in bytes.

nbytes

Total bytes consumed by the elements of the array.

ndim

Number of array dimensions.

real

The real part of the array.

shape

Tuple of array dimensions.

size

Number of elements in the array.

strides

Tuple of bytes to step in each dimension when traversing an array.

Methods

all([axis, out, keepdims]) Returns True if all elements evaluate to True.
any([axis, out, keepdims]) Returns True if any of the elements of a evaluate to True.
argmax([axis, out]) Return indices of the maximum values along the given axis.
argmin([axis, out]) Return indices of the minimum values along the given axis of a.
argpartition(kth[, axis, kind, order]) Returns the indices that would partition this array.
argsort([axis, kind, order]) Returns the indices that would sort this array.
astype(dtype[, order, casting, subok, copy]) Copy of the array, cast to a specified type.
byteswap([inplace]) Swap the bytes of the array elements
choose(choices[, out, mode]) Use an index array to construct a new array from a set of choices.
clip([min, max, out]) Return an array whose values are limited to [min, max].
compress(condition[, axis, out]) Return selected slices of this array along given axis.
conj() Complex-conjugate all elements.
conjugate() Return the complex conjugate, element-wise.
copy([order]) Return a copy of the array.
cumprod([axis, dtype, out]) Return the cumulative product of the elements along the given axis.
cumsum([axis, dtype, out]) Return the cumulative sum of the elements along the given axis.
diagonal([offset, axis1, axis2]) Return specified diagonals.
dot(b[, out]) Dot product of two arrays.
dump(file) Dump a pickle of the array to the specified file.
dumps() Returns the pickle of the array as a string.
fill(value) Fill the array with a scalar value.
flatten([order]) Return a copy of the array collapsed into one dimension.
getfield(dtype[, offset]) Returns a field of the given array as a certain type.
item(*args) Copy an element of an array to a standard Python scalar and return it.
itemset(*args) Insert scalar into an array (scalar is cast to array’s dtype, if possible)
max([axis, out, keepdims]) Return the maximum along a given axis.
mean([axis, dtype, out, keepdims]) Returns the average of the array elements along given axis.
min([axis, out, keepdims]) Return the minimum along a given axis.
newbyteorder([new_order]) Return the array with the same data viewed with a different byte order.
nonzero() Return the indices of the elements that are non-zero.
partition(kth[, axis, kind, order]) Rearranges the elements in the array in such a way that the value of the element in kth position is in the position it would be in a sorted array.
prod([axis, dtype, out, keepdims]) Return the product of the array elements over the given axis
ptp([axis, out, keepdims]) Peak to peak (maximum - minimum) value along a given axis.
put(indices, values[, mode]) Set a.flat[n] = values[n] for all n in indices.
ravel([order]) Return a flattened array.
repeat(repeats[, axis]) Repeat elements of an array.
reshape(shape[, order]) Returns an array containing the same data with a new shape.
resize(new_shape[, refcheck]) Change shape and size of array in-place.
round([decimals, out]) Return a with each element rounded to the given number of decimals.
searchsorted(v[, side, sorter]) Find indices where elements of v should be inserted in a to maintain order.
setfield(val, dtype[, offset]) Put a value into a specified place in a field defined by a data-type.
setflags([write, align, uic]) Set array flags WRITEABLE, ALIGNED, (WRITEBACKIFCOPY and UPDATEIFCOPY), respectively.
sort([axis, kind, order]) Sort an array, in-place.
squeeze([axis]) Remove single-dimensional entries from the shape of a.
std([axis, dtype, out, ddof, keepdims]) Returns the standard deviation of the array elements along given axis.
sum([axis, dtype, out, keepdims]) Return the sum of the array elements over the given axis.
swapaxes(axis1, axis2) Return a view of the array with axis1 and axis2 interchanged.
take(indices[, axis, out, mode]) Return an array formed from the elements of a at the given indices.
to_xarray() Convert Field object to xarray.DataArray
tobytes([order]) Construct Python bytes containing the raw data bytes in the array.
tofile(fid[, sep, format]) Write array to a file as text or binary (default).
tolist() Return the array as a (possibly nested) list.
tostring([order]) Construct Python bytes containing the raw data bytes in the array.
trace([offset, axis1, axis2, dtype, out]) Return the sum along diagonals of the array.
transpose(*axes) Returns a view of the array with axes transposed.
var([axis, dtype, out, ddof, keepdims]) Returns the variance of the array elements, along given axis.
view([dtype, type]) New view of array with the same data.
to_xarray()[source]

Convert Field object to xarray.DataArray

climlab.domain.field.global_mean(field)[source]

Calculates the latitude weighted global mean of a field with latitude dependence.

Parameters:

field (Field) – input field

Raises:

ValueError if input field has no latitude axis

Returns:

latitude weighted global mean of the field

Return type:

float

Example:

initial global mean temperature of EBM model:

>>> import climlab
>>> model = climlab.EBM()
>>> climlab.global_mean(model.Ts)
Field(11.997968598413685)
climlab.domain.field.to_latlon(array, domain, axis='lon')[source]

Broadcasts a 1D axis dependent array across another axis.

Parameters:
  • input_array (array) – the 1D array used for broadcasting
  • domain – the domain associated with that array
  • axis – the axis that the input array will be broadcasted across [default: ‘lon’]
Returns:

Field with the same shape as the domain

Example:
>>> import climlab
>>> from climlab.domain.field import to_latlon
>>> import numpy as np

>>> state = climlab.surface_state(num_lat=3, num_lon=4)
>>> m = climlab.EBM_annual(state=state)
>>> insolation = np.array([237., 417., 237.])
>>> insolation = to_latlon(insolation, domain = m.domains['Ts'])
>>> insolation.shape
(3, 4, 1)
>>> insolation
Field([[[ 237.],   [[ 417.],   [[ 237.],
        [ 237.],    [ 417.],    [ 237.],
        [ 237.],    [ 417.],    [ 237.],
        [ 237.]],   [ 417.]],   [ 237.]]])