diff --git a/resolve/data/observation.py b/resolve/data/observation.py
index b9b2b7f424880303452873df17bdd6aa1e8cd1a5..b4fe3301062a6d1f032b8626ceb1d84ac24b7963 100644
--- a/resolve/data/observation.py
+++ b/resolve/data/observation.py
@@ -334,13 +334,23 @@ class Observation(BaseObservation):
             antpos.append(val)
         pol = Polarization.from_list(dct["polarization"])
         direction = Direction.from_list(dct["direction"])
-        slc = slice(None) if lo_hi_index is None else slice(*lo_hi_index)
+        if lo_hi_index is None:
+            vis = dct["vis"]
+            weight = dct["weight"]
+            freq = dct["freq"]
+        else:
+            slc = slice(*lo_hi_index)
+            # Convert view into its own array
+            vis = dct["vis"][..., slc].copy()
+            weight = dct["weight"][..., slc].copy()
+            freq = dct["freq"][slc].copy()
+        del dct
         return Observation(
             AntennaPositions.from_list(antpos),
-            dct["vis"][..., slc],
-            dct["weight"][..., slc],
+            vis,
+            weight,
             pol,
-            dct["freq"][slc],
+            freq,
             direction,
         )