title: "ValueError: The truth value of an array with more than one element is ambiguous"
body: <p>I am trying to execute the following code :( this is a simple code for Kmeans algorithm which has been written in Python.The two-step procedure continues until the assignments of clusters and centroids no longer change.  The convergence is guaranteed but the solution might be a local minimum. In practice, the algorithm is run multiple times and averaged. </p>
  
  <pre><code>import numpy as np
  import random
  from numpy import *
  
  points = [[1,1],[1.5,2],[3,4],[5,7],[3.5,5],[4.5,5], [3.5,4]]
  
  
  def cluster(points,center):
    clusters = {}
  
    for x in points:
  
      z= min([(i[0], np.linalg.norm(x-center[i[0]]))  for i in enumerate(center)], key=lambda t:t[1])
  
      try:
        clusters[z].append(x)
      except KeyError:
        clusters[z]=[x]
  
    return clusters
  
  def update(oldcenter,clusters):
  
   d=[]
   r=[]
   newcenter=[]
  
   for k in clusters:
    if k[0]==0: 
     d.append(clusters[(k[0],k[1])])
  
    else:
     r.append(clusters[(k[0],k[1])])
  
   c=np.mean(d, axis=0)
   u=np.mean(r,axis=0)
   newcenter.append(c)
   newcenter.append(u)
  
   return newcenter
  
  def shouldStop(oldcenter,center, iterations):
      MAX_ITERATIONS=4
      if iterations &gt; MAX_ITERATIONS: return True
      return (oldcenter == center)
  
  def kmeans():   
    points = np.array([[1,1],[1.5,2],[3,4],[5,7],[3.5,5],[4.5,5], [3.5,4]])
    clusters={}
    iterations = 0
    oldcenter=([[],[]])   
    center= ([[1,1],[5,7]])                        
  
    while not shouldStop(oldcenter, center, iterations):
          # Save old centroids for convergence test. Book keeping.
          oldcenter=center
          iterations += 1
          clusters=cluster(points,center)  
          center=update(oldcenter,clusters)
  
    return (center,clusters)
  
  kmeans()
  </code></pre>
  
  <p>but now i stuck. Can anybody help me with this, please?</p>
  
  <pre><code>Traceback (most recent call last):
    File "has_converged.py", line 64, in &lt;module&gt;
      (center,clusters)=kmeans()
    File "has_converged.py", line 55, in kmeans
      while not shouldStop(oldcenter, center, iterations):
    File "has_converged.py", line 46, in shouldStop
      return (oldcenter == center)
  ValueError: The truth value of an array with more than one element is ambiguous.
   Use a.any() or a.all()
  </code></pre>