Created
June 18, 2020 14:06
-
-
Save loretoparisi/86b436f4bd6d975a8b6ec6686dddd866 to your computer and use it in GitHub Desktop.
Python Numpy JSON Encoder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# | |
# @author loretoparisi at gmail dot com | |
# Copyright (c) 2020 Loreto Parisi | |
# | |
import numpy as np | |
import json | |
class NumpyEncoder(json.JSONEncoder): | |
""" Custom encoder for numpy data types """ | |
def default(self, obj): | |
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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Useful when encoding numpy objects as JSON like in Dataset Statistics with Python Pandas