From 20673f53a6c9d9f7080c6e6a570207eb095f4ffd Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Bayle <j2b.bayle@gmail.com>
Date: Wed, 17 Feb 2021 10:55:00 +0100
Subject: [PATCH] Add `collapsed()` method on containers

---
 lisainstrument/containers.py | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lisainstrument/containers.py b/lisainstrument/containers.py
index 8edf2b4..e8c9679 100644
--- a/lisainstrument/containers.py
+++ b/lisainstrument/containers.py
@@ -46,6 +46,15 @@ class ForEachObject(abc.ABC):
         """
         return self.__class__(lambda mosa: transformation(mosa, self[mosa]))
 
+    def collapsed(self):
+        """Turn a numpy arrays containing identical elements into a scalar.
+
+        This method can be used to optimize computations when constant time series are involved.
+        """
+        return self.transformed(lambda _, x:
+            x[0] if isinstance(x, numpy.ndarray) and numpy.all(x == x[0]) else x
+        )
+
     def write(self, hdf5, dataset):
         """Write values in dataset on HDF5 file.
 
-- 
GitLab