qfeval_functions.functions.nanamin

nanamin(x, dim=None, keepdim=False)[source]

Compute the minimum of tensor elements along specified dimensions, ignoring NaN values.

This function calculates the minimum of all valid (non-NaN) elements in a tensor along the specified dimension(s). Unlike nanmin(), this function supports multiple dimensions but does not return indices. When no valid elements are found along a dimension, the result is NaN.

The NaN-aware minimum is computed as:

\[\text{nanamin}(X) = \min_{i \text{ valid}} X_i\]

where the minimum is over all valid (non-NaN) values.

Parameters:
  • x (Tensor) – The input tensor containing values.

  • dim (Union[None, int, Tuple[int, ...]]) – The dimension(s) along which to compute the minimum. If None (default), the minimum is computed over all dimensions.

  • keepdim (bool) – Whether the output tensor has dim retained or not. Default is False.

Returns:

The minimum values computed only over valid (non-NaN) values. When no valid values exist along a dimension, the result is NaN. The shape depends on the input dimensions, dim, and keepdim parameters.

Return type:

Tensor

Example

>>> # Simple minimum with NaN values
>>> x = torch.tensor([1.0, 2.0, nan, 4.0, 5.0])
>>> QF.nanamin(x)
tensor(1.)
>>> # All NaN returns NaN
>>> all_nan = torch.tensor([nan, nan, nan])
>>> QF.nanamin(all_nan)
tensor(nan)
>>> # 2D tensor with min along columns
>>> x = torch.tensor([[1.0, nan, 3.0],
...                   [4.0, 5.0, nan]])
>>> QF.nanamin(x, dim=0)
tensor([1., 5., 3.])
>>> # Min along rows
>>> QF.nanamin(x, dim=1)
tensor([1., 4.])
>>> # Multiple dimensions
>>> x = torch.tensor([[[1.0, nan], [3.0, 4.0]],
...                   [[nan, 6.0], [7.0, nan]]])
>>> QF.nanamin(x, dim=(1, 2))
tensor([1., 6.])
>>> # With keepdim
>>> x = torch.tensor([[1.0, nan, 3.0],
...                   [4.0, 5.0, nan]])
>>> QF.nanamin(x, dim=1, keepdim=True)
tensor([[1.],
        [4.]])
>>> # All NaN slice returns NaN
>>> x = torch.tensor([[1.0, 2.0],
...                   [nan, nan]])
>>> QF.nanamin(x, dim=1)
tensor([1., nan])
>>> # With positive infinity
>>> x = torch.tensor([[1.0, inf, 3.0],
...                   [nan, 2.0, inf]])
>>> QF.nanamin(x, dim=1)
tensor([1., 2.])

See also

nanmin(): NaN-aware minimum with indices (single dimension only). nanamax(): NaN-aware maximum over multiple dimensions. torch.amin: Standard minimum over multiple dimensions (NaN propagates).