diff --git a/bilby/core/utils/io.py b/bilby/core/utils/io.py index c55837bfded43ec3673e1114000e61b07b9821fa..01026a3dbbbd4b08f766cb6d4c934ba6d4d1708a 100644 --- a/bilby/core/utils/io.py +++ b/bilby/core/utils/io.py @@ -278,19 +278,22 @@ def encode_for_hdf5(key, item): elif item is None: output = "__none__" elif isinstance(item, list): + item_array = np.array(item) if len(item) == 0: output = item - elif isinstance(item[0], (str, bytes)) or item[0] is None: + elif np.issubdtype(item_array.dtype, np.number): + output = np.array(item) + elif issubclass(item_array.dtype.type, str) or item[0] is None: output = list() for value in item: if isinstance(value, str): output.append(value.encode("utf-8")) elif isinstance(value, bytes): output.append(value) - else: + elif value is None: output.append(b"__none__") - elif isinstance(item[0], (int, float, complex)): - output = np.array(item) + else: + output.append(str(value).encode("utf-8")) else: raise ValueError(f'Cannot save {key}: {type(item)} type') elif isinstance(item, PriorDict):