我想: 传递一个函数,使其首先接收一个参数,然后再接收另一个参数。 以下是详细信息:
def SuLQ(g, S, d):
sigma = 0
for i in S:
sigma += g(d[i])
if sigma <= len(S) and sigma >= 0:#required for DP
return sigma + np.random.normal(loc = 0.0,scale = R)
else:
return 0
def sa_dir(wj, di):
if np.dot(wj, di) <= 0:
return 1
else:
return 0
whole_set = [i for i in xrange(48843)]#[n]
two_d_array, targ = predict_on_b()
w0 = [ 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
0, 0, 0, 0, 0, 0]
num_mis_vecs = SuLQ(sa_dir(wj = w0,), whole_set, two_d_array)
在行中:
num_mis_vecs = SuLQ(sa_dir(wj = w0,), whole_set, two_d_array)
我将函数sa_dir作为参数传递给SuLQ,同时给sa_dir一个参数wj(方向向量)。
sa_dir的另一个参数在函数中给出(其中g是sa_dir(wj,di)的另一个名称,参数wj已经修复)
SuLQ(g, S, d)
执行时
sigma += g(d[i])
但似乎python不允许这样做。这是我得到的错误。
TypeError: sa_dir() takes exactly 2 arguments (1 given)
我不想将wj硬编码到sa_dir中,因为我想稍后更改wj。 有人有建议吗?提前谢谢。
(万一你感兴趣,我正在使用python重新实现一个论文的框架。) (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.209&rep=rep1&type=pdf)
答案 0 :(得分:0)
你的答案是undefined method `to_key' for #<ActiveRecord::Relation []>
Did you mean? to_set to_ary
函数,它接受一个函数和部分参数,然后在所有添加的参数后应用它们:
functools.partial