Skip to content

Instantly share code, notes, and snippets.

@loretoparisi
Created June 18, 2020 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loretoparisi/86b436f4bd6d975a8b6ec6686dddd866 to your computer and use it in GitHub Desktop.
Save loretoparisi/86b436f4bd6d975a8b6ec6686dddd866 to your computer and use it in GitHub Desktop.
Python Numpy JSON Encoder
#!/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)
@loretoparisi
Copy link
Author

Useful when encoding numpy objects as JSON like in Dataset Statistics with Python Pandas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment