bearbeiten:
Die Methode, die ich vorher (diese Antwort an der Unterseite) beschrieben hat Problem mit diesem Eingang:
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
Da es nicht all 1
‚s umfassen wird und 6
‚s wegen es den gleichen Wert wie die Grenze aufweist.
Eigentlich können Sie implementieren einfach die ganze Sache selbst, nach der Anweisung in der Dokumentation Matlab. Es ist offensichtlich einfacher = D
Hier ist der Code in Python 2:
from numpy import mean
def trimmean(arr, percent):
n = len(arr)
k = int(round(n*(float(percent)/100)/2))
return mean(arr[k+1:n-k])
Sie numpy.percentile
oder scipy.stats.scoreatpercentile
verwenden können, um den absoluten Wert zu bekommen.
Sie sollten mit verschiedenen Eingaben versuchen, um die Grenzfälle zu überprüfen, um genau das Verhalten zu erhalten, das Sie wollen.
Ich war interessiert, wie schwierig es wäre, dies zu implementieren, und ich fand eine nette Diskussion darüber, wie ein getrimmtes Mittel funktioniert: http://stats.stackexchange.com/questions/4252/how-to-calculate-the -truncated-oder-getrimmten Mittelwert – steveha