diff --git a/xbob/learn/mlp/shuffler.cpp b/xbob/learn/mlp/shuffler.cpp
index 71e6e35d292c32fd663c275b381737e938c456a1..c282bd86f1a5c96f3e5e2c6935eaafc19ccd4abf 100644
--- a/xbob/learn/mlp/shuffler.cpp
+++ b/xbob/learn/mlp/shuffler.cpp
@@ -312,6 +312,34 @@ static PyObject* PyBobLearnDataShuffler_Call
 
 }
 
+PyDoc_STRVAR(s_stdnorm_str, "stdnorm");
+PyDoc_STRVAR(s_stdnorm_doc,
+"o.stdnorm() -> (mean, stddev)\n\
+\n\
+Returns the standard normalisation parameters (mean and std. deviation)\n\
+for the input data. Returns a tuple ``(mean, stddev)``, which are 1D\n\
+float64 arrays with as many entries as ``o.data_width``.");
+
+static PyObject* PyBobLearnDataShuffler_GetStdNorm
+(PyBobLearnDataShufflerObject* self) {
+
+  //allocates output vectors, secure them
+  Py_ssize_t shape = self->cxx->getDataWidth();
+  auto mean = (PyBlitzArrayObject*)PyBlitzArray_SimpleNew(NPY_FLOAT64, 1, &shape);
+  if (!mean) return 0;
+  auto std = (PyBlitzArrayObject*)PyBlitzArray_SimpleNew(NPY_FLOAT64, 1, &shape);
+  if (!std) return 0;
+
+  self->cxx->getStdNorm(*PyBlitzArrayCxx_AsBlitz<double,1>(mean),
+      *PyBlitzArrayCxx_AsBlitz<double,1>(std));
+
+  return Py_BuildValue("OO",
+      PyBlitzArray_NUMPY_WRAP((PyObject*)mean),
+      PyBlitzArray_NUMPY_WRAP((PyObject*)std)
+      );
+
+}
+
 static PyMethodDef PyBobLearnDataShuffler_methods[] = {
   {
     s_draw_str,
@@ -319,9 +347,74 @@ static PyMethodDef PyBobLearnDataShuffler_methods[] = {
     METH_VARARGS|METH_KEYWORDS,
     s_draw_doc
   },
+  {
+    s_stdnorm_str,
+    (PyCFunction)PyBobLearnDataShuffler_GetStdNorm,
+    METH_NOARGS,
+    s_stdnorm_doc
+  },
   {0} /* Sentinel */
 };
 
+PyDoc_STRVAR(s_data_width_str, "data_width");
+PyDoc_STRVAR(s_data_width_doc,
+"The number of features (i.e. the *width*) of each data vector");
+
+static PyObject* PyBobLearnDataShuffler_dataWidth
+(PyBobLearnDataShufflerObject* self, void* /*closure*/) {
+  return Py_BuildValue("n", self->cxx->getDataWidth());
+}
+
+PyDoc_STRVAR(s_target_width_str, "target_width");
+PyDoc_STRVAR(s_target_width_doc,
+"The number of components (i.e. the *width*) of target vectors");
+
+static PyObject* PyBobLearnDataShuffler_targetWidth
+(PyBobLearnDataShufflerObject* self, void* /*closure*/) {
+  return Py_BuildValue("n", self->cxx->getTargetWidth());
+}
+
+PyDoc_STRVAR(s_auto_stdnorm_str, "auto_stdnorm");
+PyDoc_STRVAR(s_auto_stdnorm_doc,
+"Defines if we use or not automatic standard (Z) normalisation");
+
+static PyObject* PyBobLearnDataShuffler_getAutoStdNorm
+(PyBobLearnDataShufflerObject* self, void* /*closure*/) {
+  if (self->cxx->getAutoStdNorm()) Py_RETURN_TRUE;
+  Py_RETURN_FALSE;
+}
+
+static int PyBobLearnDataShuffler_setAutoStdNorm
+(PyBobLearnDataShufflerObject* self, PyObject* o, void* /*closure*/) {
+  self->cxx->setAutoStdNorm(PyObject_IsTrue(o));
+  return 0;
+}
+
+static PyGetSetDef PyBobLearnDataShuffler_getseters[] = {
+    {
+      s_data_width_str,
+      (getter)PyBobLearnDataShuffler_dataWidth,
+      0,
+      s_data_width_doc,
+      0
+    },
+    {
+      s_target_width_str,
+      (getter)PyBobLearnDataShuffler_targetWidth,
+      0,
+      s_target_width_doc,
+      0
+    },
+    {
+      s_auto_stdnorm_str,
+      (getter)PyBobLearnDataShuffler_getAutoStdNorm,
+      (setter)PyBobLearnDataShuffler_setAutoStdNorm,
+      s_auto_stdnorm_doc,
+      0
+    },
+    {0}  /* Sentinel */
+};
+
 PyTypeObject PyBobLearnDataShuffler_Type = {
     PyVarObject_HEAD_INIT(0, 0)
     s_shuffler_str,                           /* tp_name */
@@ -352,7 +445,7 @@ PyTypeObject PyBobLearnDataShuffler_Type = {
     0,                                        /* tp_iternext */
     PyBobLearnDataShuffler_methods,           /* tp_methods */
     0,                                        /* tp_members */
-    0,                                        /* tp_getset */
+    PyBobLearnDataShuffler_getseters,         /* tp_getset */
     0,                                        /* tp_base */
     0,                                        /* tp_dict */
     0,                                        /* tp_descr_get */