'Returns ndarray components data as a matrix, if components data are
available and ndarray dimension does not exceed 2.
Examples
>>> from sympy.tensor.tensor import TensorIndexType, tensorsymmetry, TensorType
>>> from sympy import ones
>>> Lorentz = TensorIndexType(\'Lorentz\', dummy_fmt=\'L\')
>>> sym2 = tensorsymmetry([1]*2)
>>> S2 = TensorType([Lorentz]*2, sym2)
>>> A = S2(\'A\')
The tensor ``A`` is symmetric in its indices, as can be deduced by the
``[1, 1]`` Young tableau when constructing `sym2`. One has to be
careful to assign symmetric component data to ``A``, as the symmetry
properties of data are currently not checked to be compatible with the
defined tensor symmetry.
>>> from sympy.tensor.tensor import tensor_indices, tensorhead
>>> Lorentz.data = [1, -1, -1, -1]
>>> i0, i1 = tensor_indices(\'i0:2\', Lorentz)
>>> A.data = [[j+i for j in range(4)] for i in range(4)]
>>> A(i0, i1).get_matrix()
Matrix([
[0, 1, 2, 3],
[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6]])
It is possible to perform usual operation on matrices, such as the
matrix multiplication:
>>> A(i0, i1).get_matrix()*ones(4, 1)
Matrix([
[ 6],
[10],
[14],
[18]])'

def get_matrix(self):

    if (0 < self.rank <= 2):
        rows = self.data.shape[0]
        columns = (self.data.shape[1] if (self.rank == 2) else 1)
        if (self.rank == 2):
            mat_list = ([] * rows)
            for i in range(rows):
                mat_list.append([])
                for j in range(columns):
                    mat_list[i].append(self[(i, j)])
        else:
            mat_list = ([None] * rows)
            for i in range(rows):
                mat_list[i] = self[i]
        return Matrix(mat_list)
    else:
        raise NotImplementedError('missing    multidimensional    reduction    to    matrix.')
