title: increase speed for looping through numpy array
body: <p>I am attempting to segment a LiDAR point cloud after the ground has been classified. I am using numpy to create an "image" of the the point cloud (pc) and am looping through the numpy array.  I would like to speed up the loop or avoid it all together.  I am going to use image segmentation techniques, but first I need to run this code to create an "image" and this is the part that is taking a while.  Is there a way to increase the speed of this loop or a way to avoid it?   </p>
  
  <pre class="lang-py prettyprint-override"><code>
  import numpy as np
  from math import ceil, floor
  
  
  '''In this case:
  pc = point cloud (X,Y,Z values)'''
  
  # point cloud is in the numpy array, pc
  minx,maxx,miny,maxy = floor(np.min(pc[:,0]-1)),ceil(np.max(pc[:,0]+1)),floor(np.min(pc[:,1]-1)),ceil(np.max(pc[:,1]+1))# x,y bounding box
  
  # grid x and y direction (resolution: 0.2 meters)
  gridx = np.linspace(minx,maxx,int((maxx - minx+0.2)*5),endpoint=True) 
  gridy = np.linspace(miny,maxy,int((maxy - miny +0.2)*5),endpoint=True)
  
  #shape of the new image with 0.2 meter resolution.
  imgx,imgy = int((maxx-minx+0.2)*5),int((maxy - miny +0.2)*5)
  
  # this is what will be created at the end.  It will be a binary image.
  img = np.zeros((imgx,imgy))
  
  #loop through array to generate image (this is the part that takes a while)
  for x,i in enumerate(gridx):
      for y,j in enumerate(gridy):
  
  # Test if there any points in this "grid"
          input_point = pc[np.where(((pc[:,0]&gt;i) &amp; (pc[:,0]&lt;i+1))&amp; ((pc[:,1]&gt;j) &amp; (pc[:,1]&lt;j+1)))]
  # if there are points, give pixel value 1.
          if input_point.shape[0]!=0:
              img[x,y]=1
  
  print('Image made')
  
  
  </code></pre>
  
  <p>Thank you.  </p>