想象一下我有一个如下功能:
f = (s**2 + 2*s + 5) + 1
其中s是:
s = [1 , 2 , 3]
如何将s传递给函数?
我知道我可以定义如下函数:
def model(s):
model = 1 + (s**2 + 2*s + 5)
return model
fitted_2_dis = [model(value) for value in s]
print ("fitted_2_dis =", fitted_2_dis)
获取:
fitted_2_dis = [9, 14, 21]
我不想使用这种方法。因为我的实际功能是如此之大,带有很多表达式。因此,我没有像下面那样定义所有表达式,而是定义了如下函数:
sum_f = sum (f)
Sum_f in my code is the summation of bunches of expressions.
当输入是数组时,还有其他方法可以评估我的函数(sum_f)吗? 谢谢
答案 0 :(得分:2)
列表理解方法是一个很好的方法。另外,您还可以使用map
:
fitted_2_dis = list(map(model, s))
如果您是numpy
的粉丝,则可以使用np.vectorize
:
np.vectorize(model)(s)
最后,如果将数组转换为numpy
的{{1}},则可以直接将其传递:
ndarray
答案 1 :(得分:1)
Map函数将很好地完成任务:
>>> map(model, s)
[9, 14, 21]
答案 2 :(得分:1)
您可以尝试以下方法:
import numpy as np
def sum_array(f):
np_s = np.array(f)
return (np_s**2 + 2*np_s + 5) + 1
s = [1, 2, 3]
sum_f = sum_array(s)