2D array describing each registered array
        together with headers - for use in __str__

def _gen_array_table(self):
        """
        2D array describing each registered array
        together with headers - for use in __str__
        """
        headers = ['Array Name', 'Size', 'Type', 'Shape']

        # Reify arrays to work out their actual size
        reified_arrays = self.arrays(reify=True)

        table = []
        for array in sorted(self.arrays().itervalues(),
                             key=lambda aval: aval.name.upper()):
            # Get the actual size of the array
            nbytes = hcu.array_bytes(reified_arrays[array.name])
            # Print shape tuples without spaces and single quotes
            sshape = '(%s)' % (','.join(map(str, array.shape)),)
            table.append([array.name,
                hcu.fmt_bytes(nbytes),
                np.dtype(array.dtype).name,
                sshape])

        return table, headers