FunctionArray#

class named_arrays.FunctionArray(inputs=0, outputs=0)#

Bases: AbstractFunctionArray, AbstractExplicitArray, Generic[InputsT, OutputsT]

A representation of a discrete function.

A composition of two arrays: inputs and outputs. inputs represents the inputs (or independent variables) of the function, and outputs represents the outputs (or dependent variables) of the function.

A subclass can add fields of its own, such as the exposure time of each image of an observation. Every such field whose value is a named array is treated as sampled along the axes of the function:

  • Indexing (with a dict, isel(), index arrays, or a boolean mask), numpy.stack(), numpy.concatenate(), numpy.moveaxis(), numpy.repeat(), numpy.take_along_axis(), numpy.reshape(), combine_axes(), and cell_centers() do to the field what they do to the outputs, along the axes which the field has. named_arrays.debroadcast() keeps an axis that the field varies along.

  • Assigning another array of the subclass with __setitem__, or copying one with numpy.copyto(), writes its fields into those of this array, in place, like the outputs. A field which does not vary along an axis being assigned can only be given the value it already has, and so can a field which is not a named array, such as a string. Since most operations pass the fields of an array on without copying them, assigning into the result of, say, a ufunc also changes the fields of the array it was computed from. A field without a distribution is instead replaced by an uncertain copy of itself, like the outputs, when the value is uncertain or the mask selects different elements in different samples.

  • An operation which removes or resamples an axis that the field varies along raises an error: a reduction with keepdims=False, numpy.percentile() (which removes the axes by default), integrate(), regrid(), or cell_centers() with random=True. So does a reduction with keepdims=True along an axis which the inputs do not have, since it keeps only the axes of the inputs. Whether the field should be summed, averaged, or dropped depends on what it is, so replace it first, for example with dataclasses.replace().

  • cell_centers() also raises an error for a field whose elements are not floating-point numbers, such as a mask, rather than turn them into fractions.

  • The other operations, including the reductions which keep the reduced axes (the default for a function array), pass the field on unchanged. A ufunc of several arrays of the subclass takes the fields of the first. An array given as the out argument of an operation takes the fields of the result, if its type has them.

When the arrays combined by numpy.stack() or numpy.concatenate() have fields which are not named arrays, such as a string or a number, those must be the same in every array. Fields which cannot be compared, such as models of an instrument, are taken from the array whose type is a subclass of the types of all the others. Arrays with a field which that type does not have, such as arrays of two unrelated subclasses, cannot be combined.

Every function array checks, when it is built, that each such field has the same number of elements as the outputs along the axes they share, so that an operation which changes the outputs without the field fails instead of leaving the field stale. The check has limits:

  • It allows outputs with a single element along an axis, as after a reduction which keeps its axes, and it cannot see an axis which an operation removed from the outputs but not from the field. Catching those would take the shape of the inputs, which can be expensive to compute.

  • It skips outputs and fields which are implicit, such as random samples, since finding their shape would compute them.

  • A subclass which defines its own __post_init__ must call super().__post_init__() for the check to run.

Fields whose values are not named arrays are otherwise passed on unchanged by every operation.

Examples

The exposure time of each of a sequence of images follows the images when they are indexed.

import dataclasses
import numpy as np
import astropy.units as u
import named_arrays as na

@dataclasses.dataclass(eq=False, repr=False)
class Images(na.FunctionArray):
    timedelta: na.AbstractScalar = 0 * u.s

images = Images(
    inputs=na.linspace(0, 30, axis="time", num=4) * u.s,
    outputs=na.ScalarArray(np.arange(4.0), axes="time") * u.DN,
    timedelta=na.ScalarArray(np.array([1, 2, 3, 4]) * u.s, axes="time"),
)

images[dict(time=slice(1, 3))].timedelta
ScalarArray(
    ndarray=[2., 3.] s,
    shape={'time': 2},
)

Co-adding the images removes the axis of time, so the exposure times are added up first.

total = np.sum(
    dataclasses.replace(images, timedelta=images.timedelta.sum("time")),
    axis="time",
    keepdims=False,
)
total.outputs / total.timedelta
ScalarArray(
    ndarray=0.6 DN / s,
    shape={},
)

Attributes

axes

A tuple of str representing the names of each dimension of this array.

axes_center

Return keys corresponding to all input axes representing bin centers

axes_flattened

Combine axes into a single str.

axes_vertex

Return keys corresponding to all input axes representing bin vertices

broadcasted

if this array has multiple components, broadcast them against each other.

explicit

Converts this array to an instance of named_arrays.AbstractExplicitArray.

indices

Compute the index of each element of this array.

inputs

The inputs of the function.

length

L2-norm of this array.

ndim

Number of dimensions of the array.

outputs

The outputs of the function.

shape

The number of elements along each axis of the array.

size

Total number of elements in the array.

type_abstract

The named_arrays.AbstractArray type corresponding to this array.

type_explicit

The named_arrays.AbstractExplicitArray type corresponding to this array.

value

Returns a new array with its units removed, if they exist.

Methods

__init__([inputs, outputs])

add_axes(axes)

Add new singleton axes to this array.

all([axis, where])

Return True if all of the elements along the given axes are True.

any([axis, where])

Return True if any of the elements along the given axes are True.

astype(dtype[, order, casting, subok, copy])

Copy of the array cast to a specific data type.

broadcast_to(shape[, append])

A new view of this array with the specified shape.

cell_centers([axis, random, seed])

Convert an array from cell vertices to cell centers.

combine_axes([axes, axis_new])

Combine some of the axes of the array into a single new axis.

copy()

Create a deep copy of this array.

copy_shallow()

Create a shallow copy of this array.

debroadcast([axes])

Remove redundant axes introduced by broadcasting.

from_scalar_array(a[, like])

Constructs a new version of this array using a as the underlying data.

gradient(axis[, component, edge_order])

Differentiate the outputs with respect to the inputs along axis.

index(value[, axis])

index_secant(value[, axis])

integrate(axis[, component])

Integrate the outputs over the given input axis or axes.

interp_linear(item)

Linearly interpolate this array to find its value at the given fractional index.

isel(**item)

Index this array along named axes given as keyword arguments.

max([axis, initial, where])

The maximum value of this array along the given axes.

mean([axis, where])

The mean value of this array along the given axes.

median([axis])

The median value of this array along the given axes.

min([axis, initial, where])

The minimum value of this array along the given axes.

ndindex([axis_ignored])

An iterator that yields the index of each element of this array.

pcolormesh(axs, input_component_x, ...[, ...])

Plot a FunctionArray via matplotlib.pyplot.pcolormesh().

percentile(q[, axis, out, overwrite_input, ...])

The requested percentile of this array along the given axes.

ptp([axis])

The peak-to-peak value of this array along the given axes.

regrid(inputs[, axis, method, weights])

Resample this function array onto a new set of input coordinates using named_arrays.regridding.regrid().

replace(**changes)

A method version of dataclasses.replace() for named arrays.

reshape(shape)

Reorganize this array into a new shape.

rms([axis, where])

The root-mean-square of this array along the given axes.

std([axis, where])

The standard deviation of this array along the given axes.

sum([axis, where])

The sum of each element of this array along the given axes.

take_along_axis(indices, axis)

Take values from this array by matching indices along axis.

to(unit[, equivalencies, copy])

Convert this array to a new unit.

to_string([prefix, multiline])

Convert this array instance to a string representation.

to_string_array([format_value, format_unit, ...])

Convert to an array of strings where each string has an appropriately-formatted unit attached to the value.

to_value(unit[, equivalencies])

The numerical value of this array, possibly in a different unit.

transpose([axes])

Reorder the axes of this array to the given sequence.

var([axis, where])

The variance of this array along the given axes.

vmr([axis, where])

The variance-to-mean ratio of this array along the given axes.

volume_cell(axis)

Computes the n-dimensional volume of each cell formed by interpreting this array as a logically-rectangular grid of vertices.

weights(inputs[, axis, method])

Compute the resampling weights of this array using named_arrays.regridding.weights().

Inheritance Diagram

Inheritance diagram of named_arrays.FunctionArray
Parameters:
  • inputs (InputsT)

  • outputs (OutputsT)

classmethod from_scalar_array(a, like=None)#

Constructs a new version of this array using a as the underlying data.

Parameters:
Return type:

Self

add_axes(axes)#

Add new singleton axes to this array.

Parameters:

axes (str | Sequence[str]) – Either a single axis name or a sequence of axis names add to this array.

Return type:

FunctionArray

See also

named_arrays.add_axes()

A functional version of this method.

all(axis=None, where=<no value>)#

Return True if all of the elements along the given axes are True.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.all()

A functional version of this method.

any(axis=None, where=<no value>)#

Return True if any of the elements along the given axes are True.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.any()

A functional version of this method.

astype(dtype, order='K', casting='unsafe', subok=True, copy=True)#

Copy of the array cast to a specific data type.

Equivalent to numpy.ndarray.astype().

Parameters:
Return type:

FunctionArray

broadcast_to(shape, append=False)#

A new view of this array with the specified shape.

Parameters:
  • shape (dict[str, int]) – The shape of the new array.

  • append (bool) – If True, shape will be appended to the current shape of this array before broadcasting.

  • self (Self)

Return type:

Self

See also

named_arrays.broadcast_to()

A functional version of this method.

cell_centers(axis=None, random=False, seed=None)#

Convert an array from cell vertices to cell centers.

Parameters:
  • axis (None | str | Sequence[str]) – The axes of the array to average over.

  • random (bool) – If true, select a random point within each cell instead of the geometric center.

  • seed (None | int) – The seed of the random sampling, which has an effect only where random is true. If None (the default), the sampling differs from one call to the next, and anything computed from it cannot be reproduced.

Return type:

AbstractExplicitArray

combine_axes(axes=None, axis_new=None)#

Combine some of the axes of the array into a single new axis.

Parameters:
  • axes (None | Sequence[str]) – The axes to combine into a new axis

  • axis_new (None | str) – The name of the new axis

Return type:

Array with the specified axes combined

copy()#

Create a deep copy of this array.

Parameters:

self (Self)

Return type:

Self

copy_shallow()#

Create a shallow copy of this array.

Parameters:

self (Self)

Return type:

Self

debroadcast(axes=None)#

Remove redundant axes introduced by broadcasting.

Parameters:
  • axes (None | str | Sequence[str]) – The axes to consider removing. If None (the default), every axis of this array is considered. Axes not present in this array are ignored.

  • self (Self)

Return type:

Self

See also

named_arrays.debroadcast()

A functional version of this method.

gradient(axis, component=None, edge_order=1)#

Differentiate the outputs with respect to the inputs along axis.

This is the counterpart to integrate(): where that one sums the outputs against a measure computed from the inputs, this one divides the difference of the outputs by the difference of the inputs.

The result has the same inputs as this array, and its outputs are the derivative, so the units of the result are those of the outputs divided by those of the differentiation variable.

  • If component is None, the inputs themselves are the differentiation variable, and they must be a scalar.

  • If component is a str, that named sub-element of the inputs is the variable, and it must be a scalar.

A center axis, where the inputs are samples, differentiates the outputs against those samples directly. A vertex axis, where the inputs are bin edges and so has one more input than output, differentiates against the cell centers, which is where the outputs live.

Parameters:
  • axis (str) – The logical axis to differentiate along.

  • component (None | str) – The named input sub-element which is the differentiation variable. If None, the inputs themselves are the variable.

  • edge_order (int) – The order of the one-sided differences used at the two ends of axis, either 1 or 2. The interior always uses second-order central differences.

Raises:

ValueError – If axis is not an axis of this array, if the differentiation variable is not a scalar or does not vary along axis, or if there are too few points along axis for the given edge_order.

Return type:

FunctionArray

See also

integrate()

The counterpart of this method, which sums the outputs against the inputs rather than dividing by them.

numpy.gradient()

The numpy function this method backs.

Notes

Unlike numpy.gradient(), the differentiation variable may vary along axes other than axis, which is what a distorted grid gives, since the differences are taken elementwise.

Examples

Differentiate a parabola, whose derivative is a straight line.

Second-order edges are asked for, since the first-order ones of the default are inexact wherever the function curves.

import numpy as np
import astropy.units as u
import named_arrays as na

x = na.linspace(0, 2, axis="x", num=5) * u.mm

f = na.FunctionArray(
    inputs=x,
    outputs=np.square(x / u.mm) * u.ph,
)

f.gradient("x", edge_order=2)
FunctionArray(
    inputs=ScalarArray(
        ndarray=[0. , 0.5, 1. , 1.5, 2. ] mm,
        shape={'x': 5},
    ),
    outputs=ScalarArray(
        ndarray=[0., 1., 2., 3., 4.] ph / mm,
        shape={'x': 5},
    ),
)
index(value, axis=None)#
Parameters:
Return type:

dict[str, Self]

index_secant(value, axis=None)#
Parameters:
Return type:

dict[str, Self]

integrate(axis, component=None)#

Integrate the outputs over the given input axis or axes.

The differential measure is computed from the inputs via AbstractArray.volume_cell():

  • If component is None, the whole input is used as the integration variable and len(axis) must match the dimensionality of the inputs (one for a scalar, two for a Cartesian2dVectorArray, etc.).

  • If component is a str, that named sub-element of the inputs (a scalar or a sub-vector) supplies the measure, and len(axis) must match its dimensionality.

A vertex axis (where the inputs represent bin edges) is integrated with a Riemann sum, while a center axis (where the inputs represent samples) is integrated with the trapezoidal rule; mixing the two in a single call is supported. The integrated axes are removed from the outputs and collapsed in the inputs by averaging.

Parameters:
  • axis (str | Sequence[str]) – The logical axis or axes to integrate over.

  • component (None | str) – The named input sub-element supplying the integration variable. If None, the whole input is used.

Return type:

FunctionArray

Examples

Integrate a constant function over a 1D domain.

import numpy as np
import astropy.units as u
import named_arrays as na

f = na.FunctionArray(
    inputs=na.ScalarLinearSpace(0, 2, axis="x", num=101) * u.nm,
    outputs=na.ScalarArray(np.full(101, 3.0), axes=("x",)) * u.ph,
)

f.integrate("x")
FunctionArray(
    inputs=ScalarArray(
        ndarray=1. nm,
        shape={},
    ),
    outputs=ScalarArray(
        ndarray=6. nm ph,
        shape={},
    ),
)
interp_linear(item)#

Linearly interpolate this array to find its value at the given fractional index.

Parameters:

item (dict[str, AbstractArray]) – A fractional index at which to evaluate the array.

Return type:

FunctionArray

isel(**item)#

Index this array along named axes given as keyword arguments.

This is a convenience wrapper around __getitem__(): a.isel(x=0) is equivalent to a[dict(x=0)].

Since keyword-argument names must be valid Python identifiers, axes whose names are not valid identifiers can only be indexed using the dict form, a[{...}].

Parameters:
Return type:

AbstractExplicitArray

max(axis=None, initial=<no value>, where=<no value>)#

The maximum value of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • initial (ArrayLike) – The initial value of the minimum, required if where provided.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.max()

A functional version of this method.

mean(axis=None, where=<no value>)#

The mean value of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.mean()

A functional version of this method.

median(axis=None)#

The median value of this array along the given axes.

Parameters:

axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

See also

numpy.median()

A functional version of this method.

min(axis=None, initial=<no value>, where=<no value>)#

The minimum value of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • initial (ArrayLike) – The initial value of the minimum, required if where provided.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.min()

A functional version of this method.

ndindex(axis_ignored=None)#

An iterator that yields the index of each element of this array.

Parameters:
  • axis_ignored (None | str | Sequence[str]) – The of the array to ignore when generating the iterator.

  • self (Self)

Return type:

Iterator[dict[str, int]]

See also

named_arrays.ndindex()

A functional version of this method.

pcolormesh(axs, input_component_x, input_component_y, input_component_row=None, input_component_column=None, index=None, output_component_color=None, **kwargs)#

Plot a FunctionArray via matplotlib.pyplot.pcolormesh().

FunctionArray.pcolormesh() takes in an axes object, or array of axes objects, along with components to be plotted along the x and y plot axes (input_component_x and input_component_y). Additional components can be tiled along subplot row/column and are specified in input_component_row and input_component_column.

import named_arrays as na
import numpy as np
import astropy.units as u
import matplotlib.pyplot as plt

position = na.Cartesian2dVectorLinearSpace(
    start=-10,
    stop=10,
    axis=na.Cartesian2dVectorArray(
        x='position_x',
        y='position_y',
    ),
    num=21,
) * u.m

x_width = 5 * u.m
y_width = 2 * u.m
velocity = 1 * u.m/u.s
time = na.ScalarLinearSpace(
    start=0 * u.s,
    stop=3 * u.s,
    num=4,
    axis='time'
)

intensity = np.exp(-(((position.x + velocity*time)/x_width) ** 2 + ((position.y + 2*velocity*time)/y_width)** 2))
scene = na.FunctionArray(
    inputs=position,
    outputs=intensity,
)

fig, axs = plt.subplots(
    nrows=scene.outputs.shape['time'],
    squeeze=False,
    sharex=True,
    subplot_kw=dict(aspect='equal'),
)
scene.pcolormesh(
    axs=axs,
    input_component_x='x',
    input_component_y='y',
    input_component_row='time',
)
../_images/named_arrays.FunctionArray_4_0.png
Parameters:
  • axs (ndarray)

  • input_component_x (str)

  • input_component_y (str)

  • input_component_row (None | str)

  • input_component_column (None | str)

  • index (None | dict[str, int])

  • output_component_color (None | str)

  • kwargs (Any)

percentile(q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False)#

The requested percentile of this array along the given axes.

Parameters:
  • q (int | float | Quantity | Self) – The percentile to compute.

  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • out (None | Self) – An optional output array in which to place the result.

  • overwrite_input (bool) – Whether to overwrite the input array.

  • method (str) – How to interpolate the result.

  • keepdims (bool) – A boolean flag indicating whether to keep the reduced dimensions.

  • self (Self)

See also

numpy.percentile()

A functional version of this method.

ptp(axis=None)#

The peak-to-peak value of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • self (Self)

Return type:

Self

See also

numpy.ptp()

A functional version of this method.

regrid(inputs, axis=None, method='multilinear', weights=None)#

Resample this function array onto a new set of input coordinates using named_arrays.regridding.regrid().

Parameters:
  • inputs (AbstractArray) – The new input coordinates on which to resample the outputs.

  • axis (None | str | tuple[str]) – The logical axes of the input over which to resample.

  • method (Literal['multilinear', 'conservative']) – The resampling method to use.

  • weights (None | tuple[AbstractScalar, dict[str, int], dict[str, int]]) – Optional weights which can be computed in advance using weights() to greatly speed repeated resampling of the same inputs.

Return type:

Self

See also

weights()

If you need to resample the same coordinates more than once.

replace(**changes)#

A method version of dataclasses.replace() for named arrays.

Parameters:

changes – The fields of the dataclass to be overwritten

Return type:

Self

reshape(shape)#

Reorganize this array into a new shape.

Parameters:
  • shape (dict[str, int]) – The new shape of the array, must be compatible with this array.

  • self (Self)

Return type:

Self

rms(axis=None, where=<no value>)#

The root-mean-square of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

std(axis=None, where=<no value>)#

The standard deviation of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.std()

A functional version of this method.

sum(axis=None, where=<no value>)#

The sum of each element of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.sum()

A functional version of this method.

take_along_axis(indices, axis)#

Take values from this array by matching indices along axis.

Parameters:
  • indices (AbstractArray) – The integer indices to take along axis.

  • axis (str) – The axis of this array along which the values are taken.

  • self (Self)

Return type:

Self

See also

named_arrays.take_along_axis()

A functional version of this method.

to(unit, equivalencies=[], copy=True)#

Convert this array to a new unit.

Equivalent to astropy.units.Quantity.to().

Parameters:
  • unit (UnitBase) – New unit of the returned array

  • equivalencies (None | list[tuple[Unit, Unit]]) – A list of equivalence pairs to try if the units are not directly convertible.

  • copy (bool) – Boolean flag controlling whether to copy the array.

Return type:

FunctionArray

to_string(prefix=None, multiline=None)#

Convert this array instance to a string representation.

Parameters:
  • prefix (None | str) – the length of this string is used to align the output

  • multiline (None | bool) – flag which controls if the output should be spread over multiple lines.

Return type:

array represented as a str

to_string_array(format_value='%.2f', format_unit='latex_inline', pad_unit='$\\,$')#

Convert to an array of strings where each string has an appropriately-formatted unit attached to the value.

Parameters:
  • format_value (str) – The string used to format the numeric value of each element.

  • format_unit (str) – The string used to format the units of each element.

  • pad_unit (str) – The string used to add horizontal space between the value and unit.

to_value(unit, equivalencies=[])#

The numerical value of this array, possibly in a different unit.

Equivalent to astropy.units.Quantity.to_value().

Parameters:
  • unit (UnitBase) – New unit of the returned array

  • equivalencies (None | list[tuple[Unit, Unit]]) – A list of equivalence pairs to try if the units are not directly convertible.

Return type:

FunctionArray

transpose(axes=None)#

Reorder the axes of this array to the given sequence.

Parameters:
  • axes (None | Sequence[str]) – The new axis ordering of this array.

  • self (Self)

Return type:

Self

See also

numpy.transpose()

The numpy version of this method.

var(axis=None, where=<no value>)#

The variance of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

  • self (Self)

Return type:

Self

See also

numpy.var()

A functional version of this method.

vmr(axis=None, where=<no value>)#

The variance-to-mean ratio of this array along the given axes.

Parameters:
  • axis (None | str | Sequence[str]) – The logical axis or axes along which the operation is computed.

  • where (Self) – An optional mask which selects which elements to be considered.

volume_cell(axis)#

Computes the n-dimensional volume of each cell formed by interpreting this array as a logically-rectangular grid of vertices.

Note that this method is usually only used for sorted arrays.

If self is a scalar, this method computes the length of each edge, and is equivalent to numpy.diff(). If self is a 2d vector, this method computes the area of each quadrilateral, and if self is a 3d vector, this method computes the volume of each cuboid.

Parameters:

axis (None | str | Sequence[str]) – The axis or axes defining the logically-rectangular grid. If self is a physical scalar, there should only be one axis. If self is a physical vector, there should be one axis for each component of the vector.

Return type:

AbstractScalar

weights(inputs, axis=None, method='multilinear')#

Compute the resampling weights of this array using named_arrays.regridding.weights(). The output of this method is designed to be used by regrid().

Parameters:
  • inputs (AbstractArray) – The new input coordinates on which to resample the outputs.

  • axis (None | str | tuple[str]) – The logical axes of the input over which to resample.

  • method (Literal['multilinear', 'conservative']) – The resampling method to use.

Return type:

tuple[AbstractScalar, dict[str, int], dict[str, int]]

See also

regrid()

A method designed to use these weights.

property axes: tuple[str, ...]#

A tuple of str representing the names of each dimension of this array.

Must have the same length as the number of dimensions of this array.

property axes_center: tuple(str)#

Return keys corresponding to all input axes representing bin centers

property axes_flattened: str#

Combine axes into a single str.

This is useful for functions like numpy.flatten() which returns an array with only one dimension.

property axes_vertex: tuple(str)#

Return keys corresponding to all input axes representing bin vertices

property broadcasted: FunctionArray#

if this array has multiple components, broadcast them against each other.

Equivalent to a.broadcast_to(a.shape).

property explicit: FunctionArray#

Converts this array to an instance of named_arrays.AbstractExplicitArray.

property indices: dict[str, ScalarArrayRange]#

Compute the index of each element of this array.

See also

named_arrays.indices()

A functional version of this method.

inputs: InputsT = 0#

The inputs of the function.

property length: FunctionArray#

L2-norm of this array.

property ndim: int#

Number of dimensions of the array. Equivalent to numpy.ndarray.ndim.

outputs: OutputsT = 0#

The outputs of the function.

property shape: dict[str, int]#

The number of elements along each axis of the array. Analogous to numpy.ndarray.shape but represented as a dict where the keys are the axis names and the values are the axis sizes.

property size: int#

Total number of elements in the array. Equivalent to numpy.ndarray.size

property type_abstract: Type[AbstractFunctionArray]#

The named_arrays.AbstractArray type corresponding to this array.

property type_explicit: Type[FunctionArray]#

The named_arrays.AbstractExplicitArray type corresponding to this array.

property value: FunctionArray#

Returns a new array with its units removed, if they exist.

The family is preserved, so a vector returns a vector and a function array returns a function array, but the result is always explicit: an implicit array materializes into its family’s explicit type.