我有一个包含度量Measurements(100, 0.3)
的列表。
我将这些测量结果提供给Criteria类Criteria(999, [Measurements(100, 0.3), Measurements(33, 0.5)])
,以便将一些标准应用于测量(method
类中的Criteria
函数)。
然后,我有一个列表(评估),其中包含上述所有内容(更正值),但可以运行Criteria
列表。所以,我正在提供一个Criteria列表。
最后,我有一个General
课程,我提供了Evaluate
的列表。
代码是:
import numpy as np
import sympy
from sympy import symbols, sympify
from sympy.utilities.autowrap import ufuncify
from sympy.utilities.lambdify import lambdify
class Measurements():
def __init__(self, value, other):
self.value = value
self.other = other
class Criteria():
def __init__(self, new_value, measurements):
self.new_value = new_value
self.measurements = measurements
def method(self):
for measurement in self.measurements:
if 20 < measurement.value < 110:
measurement.value = self.new_value
return self.measurements
class Evaluate():
def __init__(self, name, criteria):
self.name = name
self.criteria = criteria
def execute(self):
for c in self.criteria:
c.method()
yield c.measurements
class General():
def __init__(self, expression, evaluate):
self.expression = expression
self.evaluate = evaluate
def proc(self):
for element in self.evaluate:
yield element.execute()
evaluate = [
Evaluate('a',
[
Criteria(999, [Measurements(100, 0.3), Measurements(33, 0.5)]),
Criteria(999, [Measurements(150, 0.3), Measurements(35, 0.5)])
]),
Evaluate('b',
[
Criteria(999, [Measurements(100, 0.3), Measurements(33, 0.5)]),
Criteria(999, [Measurements(150, 0.3), Measurements(35, 0.5)])
])
]
在这一点上代码一切正常(我可以找回正确的测量结果,即:
[Measurements(999, 0.3), Measurements(999, 0.5)],
[Measurements(150, 0.3), Measurements(999, 0.5)]
)
因此,Measurements value
已更改为999,999,150,999。
现在我想做以下事情。
我希望能够获得Evaluate('a',..)
的结果数组和Evaluate('b',...)
的结果数组,将它们传递给General.proc()
方法并评估一些表达式(例如a+b
})。
我想区分“a”和“b”结果,因为表达式可能是a*8+b
或a+b*8
。
我知道在sympy
部分,我必须做以下事情:
def proc(self):
a, b = symbols("data_a data_b")
expression = sympify(self.expression)
for element in self.evaluate:
yield element.execute()
f = ufuncify((a, b), expression, backend='numpy')
yield f(data_a, data_b)
但我不知道如何填充部分(正如我所说,我必须分别得到a和b的结果,因此在上面的代码中data_a
将是a和{{1}的结果b。