2017-05-03 4 views
0

Ich versuche, die durchschnittliche Größe einer Kontur/Ball zu berechnen. Ich habe Bogenlänge verwendet, um den Umfang des Balls zu berechnen, und dann den Durchmesser ermittelt. Mein Problem ist, dass sich die Konturwerte ständig ändern.Wie python numpy Array-Größenbeschränkung einstellen

Ich möchte die ersten 10 Werte des Durchmessers in ein np.array eingeben und das Mittel berechnen, um meine Objektgröße zu verwenden. Ich bin neu bei Python, habe mehrere Methoden ausprobiert, aber keine Lösung gefunden, um entweder die Größe festzulegen oder die ersten 10 Array-Tupel zu extrahieren. Ich habe versucht, die ersten 10 zu nehmen, die für i in Reichweite verwendet werden.

Mein aktueller Code ist:

def average_diam (diameter): 
    av_diameter = np.array(diameter) 
    for i in np.arange(1, len(av_diameter)): 
      for i in av_diameter >= 10: 
        average = np.mean() 
        print(average) 


perimeter = cv2.arcLength(c, True) 
diameter = perimeter/pi 
average = average_diam(diameter) 

Dank für die Hilfe !!

+0

Durchmesser in dieser Die Situation ist ein einziger "float", also hat dein "numpy" Array die Länge 1. Angenommen es handelt sich um ein Array, kannst du etwas tun, wie 'für i im Bereich (0, 10: av_diameter = Durchmesser [i]' dann drücke einfach 'np .mean (av_diameter) ' – quantik

Antwort

0

Unter der Annahme, Durchmesser ist eine Liste von Elementen einfach Sie tun können, können Sie so etwas wie

def average_diam(x): 
    av_diameter = np.zeros(10) 
    for i in range(0, 10): 
     av_diameter[i] = x[i] 
    return np.mean(av_diameter) 

average_diam(diameter) 

ehrlich tun, nur ein Motto für diese, ohne eine Funktion aufrufen:

average = np.mean(np.asarray(diameter[0:10]))

+0

Ich bekomme ein: 'float' Objekt hat kein Attribut '__getitem__' Fehler auf beiden Methoden? –

+0

Dann 'Durchmesser' ist keine Liste. Es ist eine Nummer. Stellen Sie sicher, dass Sie wissen, welche Objekte/Variablen sind, bevor Sie anfangen, sie herumzuwerfen. – hpaulj

+0

Oh ich sehe! Wenn ich den Durchmesser ausgedruckt habe, haben sich die Werte ständig geändert. Also dachte ich, indem ich diese in ein Array legte, dass es alle verschiedenen Größen speichern würde –