code: def voronoi(x, centers):
      """Assignment of data items to nearest cluster center
  
      Parameters
      ----------
      x array of shape (n,p)
        n = number of items, p = data dimension
      centers, array of shape (k, p) the cluster centers
  
      Returns
      -------
      z vector of shape(n), the resulting assignment
      """
      if np.size(x) == x.shape[0]:
          x = np.reshape(x, (np.size(x), 1))
      if np.size(centers) == centers.shape[0]:
          centers = np.reshape(centers, (np.size(centers), 1))
      if x.shape[1] != centers.shape[1]:
          raise ValueError("Inconsistent dimensions for x and centers")
  
      return _EStep(x, centers)[0]
  
imports: import numpy
label_desc: Use image node_id 4 for calling a global function with example usage: voronoi(x, centers) and returns: _EStep