Source code for smac.utils.numpyencoder

from __future__ import annotations

from typing import Any

import json

import numpy as np


[docs] class NumpyEncoder(json.JSONEncoder): """Custom encoder for numpy data types From https://stackoverflow.com/a/61903895 """
[docs] def default(self, obj: Any) -> Any: """Handle numpy datatypes if present by converting to native python Parameters ---------- obj : Any Object to serialize Returns ------- Any Object in native python """ if isinstance( obj, ( np.int_, np.intc, np.intp, np.int8, np.int16, np.int32, np.int64, np.uint8, np.uint16, np.uint32, np.uint64, ), ): return int(obj) elif isinstance(obj, (np.float_, np.float16, np.float32, np.float64)): return float(obj) elif isinstance(obj, (np.complex_, np.complex64, np.complex128)): return {"real": obj.real, "imag": obj.imag} elif isinstance(obj, (np.ndarray,)): return obj.tolist() elif isinstance(obj, (np.bool_)): return bool(obj) elif isinstance(obj, (np.void)): return None return json.JSONEncoder.default(self, obj)