2015-10-13 6 views
7

Dopo un aggiornamento di MacPorts, che penso aggiornate NumPy, sto ottenendo l'avvertimento:VisibleDeprecationWarning: l'indice booleano non corrispondeva all'array indicizzato lungo la dimensione 1; dimensione è 2 ma corrispondente dimensione booleana è 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]) 

che non è stato sollevato prima. Il codice relativo è:

# 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 è un singolo scalare.

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 

Tutte le idee?

risposta

12

Ho iniziato a ricevere un errore simile dopo essere passato a numpy 1.10.1. Penso che puoi liberarti dell'avvertimento semplicemente avvolgendo l'array booleano in un numpy.where().

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

Dal momento che si sta solo prendendo le dimensioni, non c'è bisogno di usare la matrice di pixel, quindi questo dovrebbe funzionare:

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