VisibleDeprecationWarning:布尔索引不匹配维度1的索引数组;维数为2,但对应的布尔维数为1



Macports更新后,我认为更新了numpy,我得到警告:

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

任何想法?

升级到numpy 1.10.1后,我开始得到类似的错误。我认为您可以通过将布尔数组包装在numpy.where()中来摆脱警告。

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

因为你只是取大小,没有必要使用像素数组,所以这应该工作:

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