diff --git a/fsl/utils/memoize.py b/fsl/utils/memoize.py
index 8f56a1a61eb9fa3346da69a27d3da13fdccc0b5d..9f56d4ceaad7f87346e91b4b4b3f709cc4ba6f7d 100644
--- a/fsl/utils/memoize.py
+++ b/fsl/utils/memoize.py
@@ -143,8 +143,13 @@ def skipUnchanged(func):
             newIsArray = isinstance(value,  np.ndarray)
             isarray    = oldIsArray or newIsArray
 
-            if isarray: nochange = np.all(oldVal == value)
-            else:       nochange =        oldVal == value
+            if isarray:
+                a = np.array(oldVal, copy=False)
+                b = np.array(value,  copy=False)
+
+                nochange = (a.shape == b.shape) and np.allclose(a, b)
+            else:
+                nochange = oldVal == value
 
             if nochange:
                 return False