'Returns the matrix as a string with rows and columns.'

@property
def table(self, padding=1):

    k = sorted(self)
    n = max(map((lambda x: len(decode_utf8(x))), k))
    n = (max(n, *(len(str(self[k1][k2])) for k1 in k for k2 in k)) + padding)
    s = ''.ljust(n)
    for t1 in k:
        s += decode_utf8(t1).ljust(n)
    for t1 in k:
        s += '\n'
        s += decode_utf8(t1).ljust(n)
        for t2 in k:
            s += str(self[t1][t2]).ljust(n)
    return s
