对于以下模型集(Foo,Bar),您可以将以下代码段的Bar.clean中的交叉验证规则强加到django 1.7.
相同的代码片段RelatedObjectDoesNotExist在django 1.8.3中引发错误.
在django 1.8.3中实现相同结果的新方法和改进方法是什么?
(我已经包含了admin.py代码,仅用于说明如何使用这些模型.)
from django.db import models
from django.core.exceptions import ValidationError
class Foo(models.Model):
name = models.CharField("Name", blank=True, max_length=300)
class Bar(models.Model):
name = models.CharField("Name", blank=True, max_length=300)
foo = models.ForeignKey('Foo', verbose_name='Foo')
def clean(self):
if self.name + self.foo.name != 'FooBar':
raise ValidationError('Concatenation should be FooBar.')
Run Code Online (Sandbox Code Playgroud)
from django.contrib import admin
import models
class BarInline(admin.TabularInline):
model = models.Bar
class FooAdmin(admin.ModelAdmin):
model = models.Foo
inlines = [BarInline,]
site = admin.site
site.register(models.Foo,FooAdmin)
Run Code Online (Sandbox Code Playgroud) 所以,我编写了这个代码,它应该有效地估计定义为h(x)的函数曲线下的面积.我的问题是我需要能够将区域估计到小数点后6位,但我在estimateN中定义的算法似乎对我的机器来说太重了.基本上问题是如何使以下代码更有效?有没有办法摆脱那个循环?
h = function(x) {
return(1+(x^9)+(x^3))
}
estimateN = function(n) {
count = 0
k = 1
xpoints = runif(n, 0, 1)
ypoints = runif(n, 0, 3)
while(k <= n){
if(ypoints[k]<=h(xpoints[k]))
count = count+1
k = k+1
}
#because of the range that im using for y
return(3*(count/n))
}
#uses the fact that err<=1/sqrt(n) to determine size of dataset
estimate_to = function(i) {
n = (10^i)^2
print(paste(n, " repetitions: ", estimateN(n)))
}
estimate_to(6)
Run Code Online (Sandbox Code Playgroud) 我试图在prolog中实现一个非常简单的约束自由语法时遇到了无限递归问题.
这是我的规则:(vp - >动词短语,np - >名词短语,ap - > adj短语,pp - >预备短语)
verb(S) :- member(S, [put, pickup, stack, unstack]).
det(S) :- member(S, [the]).
adj(S) :- member(S, [big, small, green, red, yellow, blue]).
noun(S) :- member(S, [block, table]).
prep(S) :- member(S, [on, from]).
vp([V|R]) :- verb(V), pp(PP), np(NP), append(NP, PP, R).
np([D, N]) :- det(D), noun(N).
np([D|R]) :- det(D), ap(AP), noun(N), append(AP, [N], R).
ap([A]) :- adj(A).
ap([A|R]) :- adj(A), ap(R).
pp([P|R]) :- prep(P), np(R).
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是ap的规则可以产生任意长的形容词串,所以在某些时候,我试图通过尝试所有这些无限的可能性来试图满足查询.
例如,以下查询将永远不会产生S = [put,the,red,block,on,the,green,block],因为它会首先将左侧"红色"上的形容词短语扩展为无限可能性,然后再尝试对.
?- …Run Code Online (Sandbox Code Playgroud) 给定:R是mxn浮点矩阵
输出:O是m×n矩阵,其中O [i,j] = R [i,j] if(i,j)是局部最大值,否则O [i,j] = 0.局部最大值定义为以i,j为中心的3x3块中的最大元素.
使用numpy和scipy在python上执行此操作的更快的方法是什么.
m,n = R.shape
for i in range(m):
for j in range(n):
R[i,j] *= (1 if R[min(0,i-1):max(m, i+2), min(0,j-1):max(n,j+2)].max() == R[i,j] else 0)
Run Code Online (Sandbox Code Playgroud) python ×2
dcg ×1
django ×1
django-admin ×1
foreign-keys ×1
matrix ×1
numpy ×1
performance ×1
prolog ×1
r ×1
scipy ×1
simulation ×1
statistics ×1