我有这段代码:
var = ['a','b','c']
arr = np.array([ [1,2,3,4,5,6,7,8,9],
[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]
])
y = np.hsplit(arr,len(var))
newdict = {}
for idx,el in enumerate(y):
newdict[str(var[idx])] = el
print(newdict)
我将数组拆分为3个新的数组,每个数组对应var
列表中的一个变量。
然后,我创建了一个新的字典,将每个变量与相应的数组进行关联。现在,我的结果是:
{'a': array([[ 1. , 2. , 3. ],
[ 0.1, 0.2, 0.3]]), 'b': array([[ 4. , 5. , 6. ],
[ 0.4, 0.5, 0.6]]), 'c': array([[ 7. , 8. , 9. ],
[ 0.7, 0.8, 0.9]])}
现在,我有一个要评估的表达式:
expr = sympify('a + b +c')
f = lambdify(var, expr, 'numpy')
result = f(newdict['a'], newdict['b'], newdict['c'])
print(result)
我正在使用lambdify,我收到了正确的结果:
[[ 12. 15. 18. ]
[ 1.2 1.5 1.8]]
我的问题是如何避免明确调用 f(newdict ['a'],newdict ['b'],newdict ['c'])
?
如何在循环中使用 lambdify?
for-loop
,可以通过newdict = dict(zip(var, y))
来定义newdict
。 - unutbu