diff --git a/model_server/base/accessors.py b/model_server/base/accessors.py
index 98aba201cb11906d4f46fb730c25c713ed81362e..7f2f74d7767d0c3d8851ffa13d586e78ebbefb7d 100644
--- a/model_server/base/accessors.py
+++ b/model_server/base/accessors.py
@@ -67,10 +67,12 @@ class GenericImageDataAccessor(ABC):
         """
         return self.apply(lambda x: x.max(axis=self._ga('Z'), keepdims=True))
 
-
     def get_mono(self, channel: int, mip: bool = False):
         return self.get_channels([channel], mip=mip)
 
+    def get_z_argmax(self):
+        return self.apply(lambda x: x.argmax(axis=self.get_axis('Z')))
+
     @property
     def data_xy(self) -> np.ndarray:
         if not self.chroma == 1 and self.nz == 1:
diff --git a/tests/base/test_accessors.py b/tests/base/test_accessors.py
index b42030707eb4ab1b336e62ff03f15d2e8dda2f59..452cb3c09ff8da94c1c9a0b01a8b50a6919534d0 100644
--- a/tests/base/test_accessors.py
+++ b/tests/base/test_accessors.py
@@ -61,6 +61,17 @@ class TestCziImageFileAccess(unittest.TestCase):
         sc = cf.get_mono(c, mip=True)
         self.assertEqual(sc.shape, (h, w, 1, 1))
 
+    def test_get_single_channel_argmax_from_zstack(self):
+        w = 256
+        h = 512
+        nc = 4
+        nz = 11
+        c = 3
+        cf = InMemoryDataAccessor(np.random.rand(h, w, nc, nz))
+        am = cf.get_mono(c).get_z_argmax()
+        self.assertEqual(am.shape, (h, w, 1, 1))
+        self.assertTrue(np.all(am.unique()[0] == range(0, nz)))
+
     def test_get_zi(self):
         w = 256
         h = 512