Copy the ``pyny.Space`` along a 3D matrix given by the three
        tuples x, y, z:        

        :param x: Number of copies and distance between them in this
            direction.
        :type x: tuple (len=2)
        :param inplace: If True, the moved ``pyny.Space`` is copied and 
            added to the current ``pyny.Space``. If False, it returns 
            the new ``pyny.Space``.
        :type inplace: bool        
        :returns: None, ``pyny.Space``

def matrix(self, x=(0, 0), y=(0, 0) , z=(0, 0), inplace=True):
        """
        Copy the ``pyny.Space`` along a 3D matrix given by the three
        tuples x, y, z:        

        :param x: Number of copies and distance between them in this
            direction.
        :type x: tuple (len=2)
        :param inplace: If True, the moved ``pyny.Space`` is copied and 
            added to the current ``pyny.Space``. If False, it returns 
            the new ``pyny.Space``.
        :type inplace: bool        
        :returns: None, ``pyny.Space``
        """
        state = Polygon.verify
        Polygon.verify = False
        base = False
        if x[0] != 0:
            x = (np.ones(x[0]-1)*x[1]).cumsum()
            if not base: base = self.copy()
            single = self.copy()
            for pos in x:
                base.add_spaces(single.move((pos, 0, 0), inplace=False))
        if y[0] != 0:
            y = (np.ones(y[0]-1)*y[1]).cumsum()
            if not base: base = self.copy()
            single = base.copy()
            for pos in y:
                base.add_spaces(single.move((0, pos, 0), inplace=False))
        if z[0] != 0:           
            z = (np.ones(z[0]-1)*z[1]).cumsum()
            if not base: base = self.copy()
            single = base.copy()
            for pos in z:
                base.add_spaces(single.move((0, 0, pos), inplace=False))
        
        Polygon.verify = state
        if inplace:
            self.places = []
            self.add_spaces(base)
        else:
            return base