我有一段代码接收输入并检查输入是否符合要求。输入由
list
对象的
S
.
class S:
def __init__(self, f, t, tf, timeline):
self.f = f
self.t = t
self.tf = tf
self.timeline = timeline
为了知道对象的组合是否满足要求,我有一个函数
列表
大小
N
对象和返回
True
或
False
.
input1 = [S_1, ..., S_N]
def c1(input1):
if condition_c1_valid:
return True
else:
return False
现在让我们考虑这个例子:
import itertools
possible_objects = [S(f, t, tf, timeline) for f in [...] for t in [..] ...]
inputs_to_check = list(itertools.combination_with_replacement(possible_objects, 5)
results = list()
for inp in inputs_to_check:
if c1(inp):
results.append(inp)
现在,我的解决方案是使用
for
上的循环
n
我每次都在检查。
代码保留符合条件的输入。
这能以矩阵的方式立即计算吗?
(矢量化)
我在想这样的事:(伪代码)
Data[input, c1, ..., cN]
return where(all(c1, ..., cN) is True)
有谁能告诉我这是不是可以实现的,并能给我举一些例子吗?最后,我要检查的输入列表非常大。因此,将计算结果发送到gpu是很有意思的。我想也许这可以通过tensorflow来实现…
谢谢你的提示:)
编辑:上面的例子与现实相去甚远。我在用Nested
对于
set
,复杂度为6或7度。目前的解决方案是使用生成器进行优化,但我想进一步推动这一点。