Source code for dl_utils.data.array

# -*- coding: utf-8 -*-
# @Time    : 7/17/25
# @Author  : Yaojie Shen
# @Project : Deep-Learning-Utils
# @File    : array.py

import numpy as np
import torch

from ..type_hint import ArrayLike, ArrayOrScalar


[docs] def to_numpy(array: ArrayOrScalar) -> np.ndarray: """ Convert array-like object or scalar to NumPy array. Args: array: Array-like object or scalar to be converted. """ if isinstance(array, np.ndarray): return array elif isinstance(array, torch.Tensor): array = array.detach().cpu() # Convert unsupported data type if array.dtype is torch.bfloat16: array = array.float() return array.numpy() elif isinstance(array, (list, tuple, int, float)): return np.array(array) else: raise TypeError(f"Unsupported type: {type(array)}")
[docs] def to_tensor(array: ArrayOrScalar, *args, **kwargs) -> torch.Tensor: """ Convert a scalar or array-like object to a PyTorch tensor. Args: array: Numeric scalar or array-like object to convert. *args: Additional arguments passed to torch.Tensor.to() **kwargs: Additional keyword arguments passed to torch.Tensor.to() """ if isinstance(array, torch.Tensor): pass elif isinstance(array, np.ndarray): array = torch.from_numpy(array) elif isinstance(array, (list, tuple, int, float)): array = torch.tensor(array) else: raise TypeError(f"Unsupported type: {type(array)}") if args or kwargs: array = array.to(*args, **kwargs) return array
[docs] def to_original(array: ArrayLike, ori_dtype) -> ArrayLike: """ Convert array-like object to original type. """ if ori_dtype is np.ndarray: return to_numpy(array) elif ori_dtype is torch.Tensor: return to_tensor(array) else: raise TypeError(f"Unsupported type: {ori_dtype}")
[docs] def is_tensor(x): """Is `torch.Tensor`""" return isinstance(x, torch.Tensor)
[docs] def is_ndarray(x): """Is `np.ndarray`""" return isinstance(x, np.ndarray)
__all__ = [ "to_numpy", "to_tensor", "to_original", "is_tensor", "is_ndarray", ]