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):