code: def _gen_array_table(self):
          
          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
docs: 2D array describing each registered array
          together with headers - for use in __str__