API reference#
earthcarekit.utils.numpy
Utilities based on numpy.
Notes#
This module does not depend on other internal modules.
all_in
#
Check if all elements in subset are present in set.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
subset
|
ArrayLike
|
The list to check. |
required |
set
|
ArrayLike
|
The list to check against. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
True if all elements of |
Source code in earthcarekit/utils/numpy/_check.py
all_same
#
Check if all elements in the input array are the same.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Input array or array-like object to check. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
True if all elements in the array are the same, False otherwise. |
Source code in earthcarekit/utils/numpy/_check.py
asarray_or_none
#
bins_to_centers
#
Converts bin edges to bin centers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bins
|
ArrayLike
|
Array of N+1 bin edges. |
required |
Returns:
| Type | Description |
|---|---|
NDArray
|
An array of N bin centers. |
Source code in earthcarekit/utils/numpy/_bin.py
centers_to_bins
#
Estimates bin edges from bin centers, assuming edges lie halfway between centers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
centers
|
ArrayLike
|
Array of N bin centers. |
required |
Returns:
| Type | Description |
|---|---|
NDArray
|
An array of N+1 bin edges. |
Source code in earthcarekit/utils/numpy/_bin.py
circular_nanmean
#
Compute the circular mean of angles in degrees, ignoring NaNs.
Source code in earthcarekit/utils/numpy/_circular.py
clamp
#
Limits given values to a range between a minimum and maximum value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
Input array or array-like object to be clamped. |
required | |
min
|
Minimum limit. |
required | |
max
|
Maximum limit. |
required |
Returns:
| Type | Description |
|---|---|
|
A clampled scalar or array. |
Examples:
>>> import numpy as np
>>> import earthcarekit.utils.numpy as np_utils
>>> x1 = np_utils.clamp(1.2, 0, 1)
>>> print(x1)
1.0
>>> x3 = np_utils.clamp(
... np.datetime64("2025-02-23"),
... np.datetime64("2025-01-01"),
... np.datetime64("2025-01-02"),
... )
>>> print(x3)
2025-01-02
>>> x4 = np_utils.clamp(
... np.timedelta64(70, "m"), np.timedelta64(0, "h"), np.timedelta64(1, "h")
... )
>>> print(x4)
60 minutes
Source code in earthcarekit/utils/numpy/_clamp.py
coarsen_mean
#
Downsample an array by averaging or taking the mode over n adjacent elements.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Input array or array-like object. |
required |
n
|
int
|
Number of elements per bin. |
required |
axis
|
int
|
Axis along which to downsample. |
0
|
is_bin
|
bool
|
If True, treat |
False
|
Returns:
| Type | Description |
|---|---|
NDArray
|
The downsampled array. |
Source code in earthcarekit/utils/numpy/_coarsen_mean.py
downsample
#
Downsample an array by selecting evenly spaced samples along one axis.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Input array or array-like object to downsample. |
required |
n
|
int
|
Number of samples to select. |
required |
axis
|
int
|
The axis along which the array |
0
|
Returns:
| Type | Description |
|---|---|
NDArray
|
The downsampled array. |
Source code in earthcarekit/utils/numpy/_downsample.py
flatten_array
#
Flatten a nested sequence of array-likes into a 1D numpy.array.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Sequence of array-like objects (may contain lists, tuples, arrays, or non-iterable elements). |
required |
Returns:
| Type | Description |
|---|---|
NDArray
|
The flattened 1D array. |
Source code in earthcarekit/utils/numpy/_flatten.py
get_number_range
#
get_number_range(
start: float, end: float, freq: float | None = None, periods: int | None = None
) -> NDArray[floating | integer]
Generates a sequence of numbers based on frequency or number of periods.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
float
|
First value in the sequence. |
required |
end
|
float
|
Last value in the sequence. |
required |
freq
|
float | None
|
Sampling frequency. |
None
|
periods
|
int | None
|
Number of evenly spaced values. |
None
|
Returns:
| Type | Description |
|---|---|
NDArray[floating | integer]
|
A sequence of numbers, either frequency-sampled or evenly spaced. |
Source code in earthcarekit/utils/numpy/_misc.py
isascending
#
Checks whether a sequence is initially ascending.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Input sequence (e.g., list, array). |
required |
raise_error
|
bool
|
Raise ValueError if sequence length < 2. |
False
|
result_constant
|
bool
|
Treat constant sequences as ascending if True. |
True
|
Returns:
| Type | Description |
|---|---|
bool
|
True if the sequence is ascending, False otherwise. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in earthcarekit/utils/numpy/_check.py
ismonotonic
#
ismonotonic(
a: ArrayLike,
strict: bool = False,
mode: Literal["any", "increasing", "decreasing"] = "any",
raise_error: bool = False,
ignore_nans: bool = True,
)
Checks whether a sequence is monotonic.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Input sequence (e.g., list, array). |
required |
strict
|
bool
|
Require strictly increasing/decreasing if True. |
False
|
mode
|
Literal['any', 'increasing', 'decreasing']
|
Direction to check ("any", "increasing", "decreasing"). |
'any'
|
raise_error
|
bool
|
Raise ValueError if not monotonic. |
False
|
ignore_nans
|
bool
|
Skip NaN values if True. |
True
|
Returns:
| Type | Description |
|---|---|
|
True if monotonic according to parameters, False otherwise. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in earthcarekit/utils/numpy/_check.py
isndarray
#
Returns True if a has type numpy.ndarray and also checks if dtype is lower/equal
in type hierarchy if given (i.e. returns True if a.dtype is subtype of dtype).
Source code in earthcarekit/utils/numpy/_check.py
lookup_value_by_number
#
Returns the value corresponding to the closest number in a monotonic series.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
Number to look up. |
required |
numbers
|
ArrayLike
|
Monotonically increasing series of numbers. |
required |
values
|
ArrayLike
|
Values corresponding to |
required |
Returns:
| Type | Description |
|---|---|
Any
|
Value from |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in earthcarekit/utils/numpy/_misc.py
normalize
#
Normalizes a sequence to [vmin, vmax], preserving NaNs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
ArrayLike
|
Input sequence (may contain NaNs). |
required |
vmin
|
float
|
Minimum of output range; defaults to 0. |
0
|
vmax
|
float
|
Maximum of output range; defaults to 1. |
1
|
Returns:
| Type | Description |
|---|---|
NDArray
|
Normalized array with NaNs preserved. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in earthcarekit/utils/numpy/_normalize.py
pad_true_sequence
#
Pads all sequences of True values occuring in an array with n True values before and after the sequence (while keeping the original size).
Source code in earthcarekit/utils/numpy/_true_sequence.py
pad_true_sequence_2d
#
Pads all sequences of True values occuring along one axis in an 2d array with n True values before and after the sequence (while keeping the original size).
Source code in earthcarekit/utils/numpy/_true_sequence.py
rebin_lerp
#
rebin_lerp(
v: ArrayLike,
axis0_coords: ArrayLike,
rebin_index: ArrayLike | None = None,
bin_edges: ArrayLike | None = None,
bin_centers: ArrayLike | None = None,
) -> NDArray
Rebin 1D or 2D arrays along the first axis (0) by linearly interpolating the two samples around a bin center.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
v
|
ArrayLike
|
1D or 2D array to be rebinned. |
required |
axis0_coords
|
ArrayLike
|
Array of reference monotonic values. |
required |
rebin_index
|
ArrayLike | None
|
Array of non-decreasing indecies mapping values in |
None
|
bin_edges
|
ArrayLike | None
|
Array of N+1 bin edges. Defaults to None. |
None
|
bin_centers
|
ArrayLike | None
|
Array of N bin centers. Defaults to None. |
None
|
Returns:
| Type | Description |
|---|---|
NDArray
|
Along axis 0 rebinned version of original array |
Source code in earthcarekit/utils/numpy/_rebin/_rebin_lerp.py
rebin_mean
#
rebin_mean(
v: ArrayLike,
rebin_index: ArrayLike | None = None,
axis0_coords: ArrayLike | None = None,
bin_edges: ArrayLike | None = None,
bin_centers: ArrayLike | None = None,
ignore_nans: bool = True,
) -> NDArray
Rebins 1D or 2D arrays along axis 0 by averaging samples within bins.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
v
|
ArrayLike
|
1D or 2D array to rebin. |
required |
rebin_index
|
ArrayLike | None
|
Bin indices mapping |
None
|
axis0_coords
|
ArrayLike | None
|
Reference values for deriving |
None
|
bin_edges
|
ArrayLike | None
|
Bin edges (N+1); used to derive |
None
|
bin_centers
|
ArrayLike | None
|
Bin centers (N); used to derive |
None
|
ignore_nans
|
bool
|
Ignore NaNs during averaging if True; bins with NaN return NaN otherwise. |
True
|
Returns:
| Type | Description |
|---|---|
NDArray
|
Rebinned array along axis 0. |
Source code in earthcarekit/utils/numpy/_rebin/_rebin_mean.py
rebin_median
#
rebin_median(
v: ArrayLike,
rebin_index: ArrayLike | None = None,
axis0_coords: ArrayLike | None = None,
bin_edges: ArrayLike | None = None,
bin_centers: ArrayLike | None = None,
ignore_nans: bool = True,
) -> NDArray
Rebins 1D or 2D arrays along axis 0 by computing the median within bins.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
v
|
ArrayLike
|
1D or 2D array to rebin. |
required |
rebin_index
|
ArrayLike | None
|
Bin indices mapping |
None
|
axis0_coords
|
ArrayLike | None
|
Reference values for deriving |
None
|
bin_edges
|
ArrayLike | None
|
Bin edges (N+1); used to derive |
None
|
bin_centers
|
ArrayLike | None
|
Bin centers (N); used to derive |
None
|
ignore_nans
|
bool
|
Ignore NaNs during median search if True; bins with NaN return NaN otherwise. |
True
|
Returns:
| Type | Description |
|---|---|
NDArray
|
Rebinned array along axis 0. |
Source code in earthcarekit/utils/numpy/_rebin/_rebin_median.py
rescale
#
Linearly map values from one range to another.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
Scalar or array-like values to be rescaled. |
required | |
src_min
|
Lower bound of the source range. |
required | |
src_max
|
Upper bound of the source range. |
required | |
dst_min
|
Lower bound of the destination range. |
required | |
dst_max
|
Upper bound of the destination range. |
required |
Returns:
| Type | Description |
|---|---|
|
The rescaled scalar or array. The retrun type matches the type of the destination range. |
Examples:
>>> import numpy as np
>>> import earthcarekit.utils.numpy as np_utils
>>> x1 = np_utils.rescale(3, 0, 10, 0, 200)
>>> print(x1)
60.0
>>> x3 = np_utils.rescale(
... [0, 0.5, 1],
... 0,
... 1,
... np.datetime64("2025-01-01 00:00:00"),
... np.datetime64("2025-01-02 00:00:00"),
... )
>>> print(x3)
['2025-01-01T00:00:00' '2025-01-01T12:00:00' '2025-01-02T00:00:00']
>>> x4 = np_utils.rescale(
... np.timedelta64(15, "m"),
... np.timedelta64(0, "h"),
... np.timedelta64(1, "h"),
... 0,
... 1,
... )
>>> print(x4)
0.25
Source code in earthcarekit/utils/numpy/_rescale.py
shift_true_sequence
#
Offsets all sequences of True values occuring in an array (while keeping the original size).
Source code in earthcarekit/utils/numpy/_true_sequence.py
wrap_to_interval
#
Wrap values in a to the interval [min, max).