Source code for idmtools_calibra.utilities.parsers.np2json
import json
import numpy as np
[docs]class NumpyAwareJSONEncoder(json.JSONEncoder):
[docs] def default(self, obj):
if isinstance(obj, np.ndarray) and obj.ndim == 1:
return obj.tolist()
return json.JSONEncoder.default(self, obj)
# convert a 1D numpy array to valid json
[docs]def np2json(arr, output="data.json"):
with open(output, 'w+') as f:
if arr.ndim == 1:
json.dump(arr, f, cls=NumpyAwareJSONEncoder)
elif arr.ndim == 2: # ugly... very ugly; need to extend the decoder
f.write("[")
for i, r in enumerate(arr):
json.dump(r, f, cls=NumpyAwareJSONEncoder)
if i + 1 < len(arr):
f.write(",")
f.write("]")
else:
print("Unsupported array dimension " + str(arr.ndim) + ". Max. supported dimension 2")