如何在 Python 3 中将两个函数加在一起?
How can I add two functions together in Python 3?
例如我有两个用两个列表表示的函数:
x_1 = [0, 1, 2, 3, 4, 5]
y_1 = [2, 4, 1, 5, 1, 2]
x_2 = [2, 3, 4, 5, 6, 7]
y_2 = [2, 4, 1, 5, 1, 2]
结果应该是
x = [0, 1, 2, 3, 4, 5, 6, 7]
y = [2, 4, 3, 9, 2, 7, 1, 2]
这里我在整数格中设置了x值,但没有必要。但我想一个解决方案可能是将它们归一化到晶格上,然后添加它们。
有什么简单的方法吗? Numpy 和 Scipy 都可用。
谢谢!
一个简单的例子
天真的实现:
x_1 = [0, 1, 2, 3, 4, 5]
y_1 = [2, 4, 1, 5, 1, 2]
x_2 = [2, 3, 4, 5, 6, 7]
y_2 = [2, 4, 1, 5, 1, 2]
f1 = dict(zip(x_1, y_1))
f2 = dict(zip(x_2, y_2))
x = list(set(f1.keys()) | set(f2.keys()))
y = [f1.get(k, 0) + f2.get(k, 0) for k in x]
print x
print y
结果:
[0, 1, 2, 3, 4, 5, 6, 7]
[2, 4, 3, 9, 2, 7, 1, 2]
numpy
有一个一维插值函数,scipy
有一个更通用的函数。
np.interp
的简单方法:
x1,y1=[0,1,2,3,4,5],[2,4,1,5,1,2]
x2,y2=[2,3,4,5,6,7],[2,4,1,5,1,2]
x3 = np.arange(x1[0],x2[-1]+1) # or latice of your choice
np.interp(x3,x1,y1,0,0) + np.interp(x3,x2,y2,0,0)
生产:
array([ 2., 4., 3., 9., 2., 7., 1., 2.])
对于 x1
范围之外的值,我告诉 interp
为 return 0,这似乎很适合您的加法方案。
其他几种构建方式 x3
:
加入 2 个列表,并要求唯一值(已排序):
x3=np.unique(x1+x2)
或者如果 x
可能已经是数组,请先将它们连接起来:
x3=np.unique(np.concatenate([x1,x2]))
例如我有两个用两个列表表示的函数:
x_1 = [0, 1, 2, 3, 4, 5]
y_1 = [2, 4, 1, 5, 1, 2]
x_2 = [2, 3, 4, 5, 6, 7]
y_2 = [2, 4, 1, 5, 1, 2]
结果应该是
x = [0, 1, 2, 3, 4, 5, 6, 7]
y = [2, 4, 3, 9, 2, 7, 1, 2]
这里我在整数格中设置了x值,但没有必要。但我想一个解决方案可能是将它们归一化到晶格上,然后添加它们。
有什么简单的方法吗? Numpy 和 Scipy 都可用。
谢谢!
一个简单的例子
天真的实现:
x_1 = [0, 1, 2, 3, 4, 5]
y_1 = [2, 4, 1, 5, 1, 2]
x_2 = [2, 3, 4, 5, 6, 7]
y_2 = [2, 4, 1, 5, 1, 2]
f1 = dict(zip(x_1, y_1))
f2 = dict(zip(x_2, y_2))
x = list(set(f1.keys()) | set(f2.keys()))
y = [f1.get(k, 0) + f2.get(k, 0) for k in x]
print x
print y
结果:
[0, 1, 2, 3, 4, 5, 6, 7]
[2, 4, 3, 9, 2, 7, 1, 2]
numpy
有一个一维插值函数,scipy
有一个更通用的函数。
np.interp
的简单方法:
x1,y1=[0,1,2,3,4,5],[2,4,1,5,1,2]
x2,y2=[2,3,4,5,6,7],[2,4,1,5,1,2]
x3 = np.arange(x1[0],x2[-1]+1) # or latice of your choice
np.interp(x3,x1,y1,0,0) + np.interp(x3,x2,y2,0,0)
生产:
array([ 2., 4., 3., 9., 2., 7., 1., 2.])
对于 x1
范围之外的值,我告诉 interp
为 return 0,这似乎很适合您的加法方案。
其他几种构建方式 x3
:
加入 2 个列表,并要求唯一值(已排序):
x3=np.unique(x1+x2)
或者如果 x
可能已经是数组,请先将它们连接起来:
x3=np.unique(np.concatenate([x1,x2]))