Después de una actualización de Macports, que creo que se actualizó numpy, recibo la advertencia:
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])
Eso no fue levantado antes. El código relacionado es:
# 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
es un solo escalar.
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
¿Algunas ideas?
Comencé a recibir un error similar después de subir a numpy 1.10.1. Creo que puede deshacerse de la advertencia simplemente envolviendo la matriz booleana en un numpy.where ().
inliers = n.size(pixels[n.where(distances <= self.dst)])
Ya que solo estás tomando el tamaño, no hay necesidad de usar la matriz de píxeles, así que esto debería funcionar:
inliers = n.size(n.where(distances <= self.dst])[0])