code: def points(self, order='C'):
          
          if str(order).upper() not in ('C', 'F'):
              raise ValueError('order {!r} not recognized'.format(order))
          else:
              order = str(order).upper()
  
          axes = range(self.ndim) if order == 'C' else reversed(range(self.ndim))
          shape = self.shape if order == 'C' else tuple(reversed(self.shape))
          point_arr = np.empty((self.size, self.ndim))
  
          for i, axis in enumerate(axes):
              view = point_arr[:, axis].reshape(shape)
              coord_shape = (1,) * i + (-1,) + (1,) * (self.ndim - i - 1)
              view[:] = self.coord_vectors[axis].reshape(coord_shape)
  
          return point_arr
docs: All grid points in a single array.
  
          Parameters
          ----------
          order : {'C', 'F'}, optional
              Axis ordering in the resulting point array.
  
          Returns
          -------
          points : `numpy.ndarray`
              The shape of the array is ``size x ndim``, i.e. the points
              are stored as rows.
  
          Examples
          --------
          >>> g = RectGrid([0, 1], [-1, 0, 2])
          >>> g.points()
          array([[ 0., -1.],
                 [ 0.,  0.],
                 [ 0.,  2.],
                 [ 1., -1.],
                 [ 1.,  0.],
                 [ 1.,  2.]])
          >>> g.points(order='F')
          array([[ 0., -1.],
                 [ 1., -1.],
                 [ 0.,  0.],
                 [ 1.,  0.],
                 [ 0.,  2.],
                 [ 1.,  2.]])