2015-10-13 29 views
7

的MacPorts的更新之后,我认为更新numpy的,我得到了警告:VisibleDeprecationWarning:布尔型索引与维度1中的索引数组不匹配;尺寸为2,但相应的布尔尺寸为1

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]) 

,这不是之前提出。相关的代码是:

# Compute distance of all non-zero points from the circumference 
distances = guess_feature.points_distance(pixels) 

# Check which points are inliers (i.e. near the circle) 
inliers = n.size(pixels[distances <= self.dst]) 

self.dst是一个标量。

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 

任何想法?

回答

12

在numpy 1.10.1之后我开始出现类似的错误。我想你可以通过将布尔数组包装在numpy.where()中来摆脱警告。

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

既然你只是把大小,有没有必要使用像素阵列,所以这应该工作:

inliers = n.size(n.where(distances <= self.dst])[0]) 
相关问题