VisibleDeprecationWarning: boolean index does not match an indexed array of size 1; the dimension is 2, but the corresponding Boolean dimension is 1

After updating Macports, which I think is being updated by numpy, I get a warning:

VisibleDeprecationWarning: boolean index did not match indexed array along dimension 1; dimension is 2 but corresponding boolean dimension is 1 inliers = n.size(pixels[distances <= self.dst]) 

which did not rise earlier. Associated Code:

 # Compute distance of all non-zero points from the circumference distances = guess_feature.points_distance(pixels) # Check which points are inliers (ie near the circle) inliers = n.size(pixels[distances <= self.dst]) 

self.dst is the only scalar.

guess_feature.points_distance :

 def points_distance(self,points): r''' Compute the distance of the points from the feature :math:`d = \left| \sqrt{(x_i - x_c)^2 + (y_i-y_c)^2} - r \right|` Args: points (numpy.ndarray): a (n,2) numpy array, each row is a 2D Point. Returns: d (numpy.ndarray): the computed distances of the points from the feature. ''' xa = n.array([self.xc,self.yc]).reshape((1,2)) d = n.abs(dist.cdist(points,xa) - self.radius) return d 

Any ideas?

+7
python numpy
source share
1 answer

I started getting a similar error after switching to numpy 1.10.1. I think you can get rid of the warning by simply folding the boolean array into numpy.where ().

 inliers = n.size(pixels[n.where(distances <= self.dst)]) 

Since you just take the size, there is no need to use a pixel array, so it should work:

 inliers = n.size(n.where(distances <= self.dst])[0]) 
+12
source share

All Articles