- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道这是否可能以更有效的方式实现。
我在 PostGRESQL 中有一个结构如下的数据集:
Year, Sitename, Array (length = 4500)
例如:
1982, DANC, array([2,3,4,5,6,7,...])
1982, ANCH, array([5,6,4,3,5,7,...])
1983, DANC, array([3,3,4,6,3,6,...])
1983, ANCH, array([8,8,5,4,3,2,...])
我想做的是按年将数组(跨行)相加
E.G.,
1982 1982 1982
DANC ANCH TOT
2 5 7
3 6 9
4 4 8
5 3 8
6 5 11
7 7 14
... ... ...
我的 Django 模型如下所示:
class Abundance(models.Model):
abundance_id = models.AutoField(primary_key=True)
site = models.ForeignKey('Site')
season = models.SmallIntegerField()
samples = ArrayField(models.DecimalField(blank=True, decimal_places=3, max_digits=30))
def __unicode__(self):
return self.site
我的 Views.py 中的以下代码有效:
import numpy as np
import bottleneck as bn
...
def testview(request):
s = ["ACUN","BRDM"]
quants = []
medians = []
for yr in range(1982,2015):
X = Abundance.objects.values_list('samples').filter(site__site_id__in = s).filter(season = yr)
h = np.matrix(np.array(X,dtype=float))
i = h.sum(axis=0)
m = bn.median(i)
up = np.percentile(i,95)
down = np.percentile(i,5)
qlist = [yr, round(down,3), round(up,3)]
mlist = [yr, round(m,3)]
quants.append(qlist)
medians.append(mlist)
return JsonResponse({'quants':quants, 'medians':medians})
但是,上面的代码非常慢——尤其是在绘制许多站点时。我试过玩 .aggregate() 但我没有找到好的解决方案。
提前致谢
最佳答案
您可能可以使用那里的一些 .aggregate()
将负载下推到 Postgres,但我认为这里速度方面的更大问题之一是 Decimal 字段。它是精度最高的,但它也是 Python 进出的更昂贵的类型之一。
就是说,我不确定是否有一种快速的方法可以从数据库调用中获取百分位数,但是您可以通过 Django ORM 轻松地将总和和中位数下推到数据库。对于其他(百分位数等),您也可以将它们向下推,但您将深入研究 django 的自定义聚合(https://docs.djangoproject.com/en/1.9/ref/models/expressions/#creating-your-own-aggregate-functions),如果您要走那么远,可能值得一试类似 aldjemy ( https://github.com/Deepwalker/aldjemy/ ) 的东西,并将整个查询转换为 SQLAlchemy,这样您就可以最大限度地控制它。
关于python - 在django queryset中聚合并计算arrayfield的中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850891/
我想使用数组字段来存储代表特定自定义类的 json 字符串列表。我所做的是: from django.contrib.postgres.fields import JSONField, ArrayFi
是否可以为 ArrayField 添加默认值? 我尝试为电子邮件字段执行此操作,但这不起作用: 常量.py: ORDER_STATUS_CHANGED = 'order_status_changed'
我正在使用 Django Postgres ArrayField response_headers = ArrayField(models.TextField(blank=True),blank=Tr
我有一个简单的模型 class Texts(models.Model): instructions_top_char instructions_top_char = ArrayFiel
我正在将 PostgreSQL 与 Django 一起使用,并且正在尝试使用 ArrayField(CharField()) 存储值和检索都不会引发任何异常,但尝试存储 ["string", "ano
我有以下错误信息: AttributeError: 'module' object has no attribute 'ArrayField' 相关代码段如下: from __future__ imp
我有一些用户帐户的字段为“donation_methods”。用户可以选择不同的方式来接受捐赠。默认情况下,每个用户都应该在数组中具有值“cash” donation_methods = ArrayF
ArrayField 的当前管理小部件是一个字段,以逗号作为分隔符,如下所示(文本列表): 这并不理想,因为我会有更长的文本(甚至 20 个单词)并包含逗号。我可以 change the delimi
我有一个类型 ArrayField在一个模型中。 my_list 的建议元素列表中的后端自动地。但是,用户随后需要根据需要更新此列表。该模型如下所示: class my_model(models.Mo
我正在使用 Django 的 postgres ArrayField。 假设我有这样一个模型: from django.db import models from django.contrib.pos
为了解决我的(有点特殊的)问题,我发现我必须使用 Django ArrayField: https://docs.djangoproject.com/en/2.1/ref/contrib/postgr
在我的 Django 应用程序中,使用 Postgresql,我有一个带有 CharFields 的 ArrayField 的模型。我想知道是否有一种数据库方法来聚合并获取表中所有字符串的列表。例如:
对于我数据库中的模型,我需要为特定字段存储大约 300 个值。如果我使用特定于 Postgres 的 ArrayField,在性能 和查询简单性 方面会有什么缺点?而不是具有一对多关系的单独表? 最佳
我需要配置一个 django.contrib.postgres.fields.ArrayField,其中第一个元素是 float ,第二个元素是一个小的正整数: data = [[1.23, 3],
我正在尝试更改 Django 为 ArrayField 生成的默认错误消息(特别是输入了太多项的错误消息) 如果用户在我的 ArrayField 中输入了太多项目,则会在模板中生成以下消息: List
我的模型看起来像这样: from django.contrib.postgres.fields import ArrayField class Trigger(models.Model): s
下面的案例 [{type: x, val: y}, {...}, {...}, ...] 可以单独用 JSONField 表示。 还有下面的案例 [1,2,3,4,5] 可以用 JSONField 表
我有一个通常看起来像这样的模型: class CategoryModel(models.Model): categories = ArrayField(..) 假设我有两个类别,“catego
我有一个定义的模型 from django.contrib.postgres.fields import ArrayField class Model(models.Model): name
我有一个定义的模型 from django.contrib.postgres.fields import ArrayField class Model(models.Model): name
我是一名优秀的程序员,十分优秀!