好的......这可能是一个愚蠢的问题......但我现在没有找到答案!
我需要实现一个对象的副本,我想要复制所有属性,除了我要完全控制副本的一两个属性.
以下是对象的标准复制行为:
>>> class test(object):
... def __init__(self, arg):
... self._a = arg
...
>>> t = test(123999)
>>> t._a
123999
>>> tc = copy.copy(t)
>>> tc._a
123999
Run Code Online (Sandbox Code Playgroud)
这基本上意味着复制了所有属性.我想要做的是以下列方式重用此行为:
>>> class test(object):
... def __init__(self, arga, argb):
... self._a = arga
... self._b = argb
...
... def __copy__(self):
... obj_copy = copy.copy(self) #NOT POSSIBLE OF COURSE => infinite recursion
... obj_copy._b = my_operation(obj_copy._b)
... return obj_copy
Run Code Online (Sandbox Code Playgroud)
我希望你明白了这一点:我想重新使用对象复制行为,但挂钩我自己的操作.有没有一个干净的方法来做到这一点(没有必要for attr_name in dir(self): ...
)???
我有数以千计的向量,每个向量约有20个特征.
给定一个查询向量和一组潜在匹配,我希望能够选择最佳N
匹配.
我花了几天时间尝试回归(使用SVM),使用我自己创建的数据集训练模型:每个向量是查询向量和结果向量的串联,我给出一个得分(主观评估)介于0和1,0之间,完美匹配,1匹配最差匹配.
我没有取得很好的成绩,我相信一个原因可能是主观上很难分配这些分数.另一方面,更容易的是主观地对结果score
进行排名(作为未知函数):
score(query, resultA) > score(query, resultB) > score(query, resultC)
Run Code Online (Sandbox Code Playgroud)
所以我认为这更像是一个学习排名的问题,我发现了Python的各种链接:
但我无法理解它是如何运作的.我真的很困惑所有的术语,成对排名等...(请注意,我对机器学习一无所知,因此我感觉有点迷失)等...所以我不明白如何应用这个我的问题.
有人可以帮我澄清事情,指出我想解决的问题的确切类别,甚至更好的我如何用Python实现这个(scikit-learn)?
我有子类dict添加一个额外的方法(所以没有覆盖).
现在,我尝试比较其中两个子类,我得到一些奇怪的东西:
>>> d1.items() == d2.items()
True
>>> d1.values() == d2.values()
True
>>> d1.keys() == d2.keys()
True
>>> d1 == d2
False
Run Code Online (Sandbox Code Playgroud)
编辑
那真是太奇怪了......我根本不明白!任何有洞察力如何的人.eq实现了吗?
以下是所有代码:
# ------ Bellow is my dict subclass (with no overriding) :
class ClassSetDict(dict):
def subsetget(self, klass, default=None):
class_sets = set(filter(lambda cs: klass <= cs, self))
# Eliminate supersets
for cs1 in class_sets.copy():
for cs2 in class_sets.copy():
if cs1 <= cs2 and not cs1 is cs2:
class_sets.discard(cs2)
try:
best_match = list(class_sets)[0]
except IndexError:
return …
Run Code Online (Sandbox Code Playgroud) 我们正在使用Kinect进行交互式安装,我们需要知道有多少人在我们的安装前慢慢站立/行走.
我们最多可以有5个人,如果有更多我们不在乎.
为此,我们采用Kinect检测到的总体积,将其除以1人的近似体积.
count = Vtotal / Vperson;
Run Code Online (Sandbox Code Playgroud)
最后,为了使计数平滑,我们计算2秒的平均计数.
countAvg = Vtotalavg / Vperson;
Run Code Online (Sandbox Code Playgroud)
这适用于2-3人,但是当有更多时,blob重叠,并且总体积似乎不再相关.
有人知道我们如何解决这个问题,并且有一个可靠的计数...要么使用相同的blob体积方法,要么更聪明!
嗨!
我想一切都在问题中...我只是想知道在Python中是否有一种很好的方法来缩短这种模式:
something = get_something()
if something:
do_a_thing_with(something)
Run Code Online (Sandbox Code Playgroud)
这意味着我if
只想在变量something
不是None(或False)的情况下进入上下文,然后在此上下文中自动设置此变量!是否有可能与with
声明?
PS:我不想定义更多的东西......我正在寻找一些即时使用的声明?!
问题很清楚,但是请注意,我不是在询问功能比较(已经有很多功能),我也不会问你喜欢哪一个!
我自己明确偏爱doctests,我将它们用于所有内容,即使这些不用于文档.但我想知道的是:你有什么可以用unitests做的,你不能用doctests做什么?
由于我发现了这个片段,我经常使用它来迭代数组:
for (i = 0; elem = array[i]; i++) doStuff(elem);
Run Code Online (Sandbox Code Playgroud)
这显然是非常错误的,如果array
可以包含任何计算结果为假(''
,undefined
,null
,0
,false
).但如果您确定不是这种情况,那么有人会看到使用此方法的另一个风险吗?
我问这个,因为它似乎并不常用,虽然它对我来说似乎真的很棒,所以我开始认为我缺少一个明显的缺点.
python ×5
copy ×1
doctest ×1
javascript ×1
kinect ×1
opencv ×1
scikit-learn ×1
unit-testing ×1