我可以用django注释计算几何平均值吗



有没有像一样使用它的方法

Foo.objects.annotate(geometric_mean=GeometricMean('bars__value'))

Foo.objects.annotate(geometric_mean=Power(Prod('bars__value'), Count('bars'))

你可以做一些类似的事情:你可以计算自然对数的平均值:

from django.db.models import Avg
from django.db.models.functions import Ln
Foo.objects.annotate(geometric_mean=Avg(Ln('bars__value')))

那么几何平均数就是它的指数。如果你真的需要几何平均数本身,那么你可以对结果使用Exp[Django-doc]:

from django.db.models import Avg
from django.db.models.functions import Exp, Ln
Foo.objects.annotate(geometric_mean=Exp(Avg(Ln('bars__value'))))

但是,如果你只想通过两种几何方式进行排序,你就不需要这样做,因为指数保持顺序关系不变:ea≤eb意味着a≤b,反之亦然。

这是因为ln(x1×x2…×xn(等价于ln[x1]+ln(x2(+…+ln(xn

最新更新