如何在Python 3中添加两个函数?

时间:2015-02-15 16:05:47

标签: python python-3.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]

,结果应为

x = [0, 1, 2, 3, 4, 5, 6, 7]
y = [2, 4, 3, 9, 2, 7, 1, 2]

这里我在整数点阵中设置x值,但这不是必需的。但我想一个解决方案可能是将它们标准化到格子上然后添加它们。

有没有简单的方法可以做到这一点? Numpy和Scipy都可以使用。

谢谢!


一个简单的例子 enter image description here

2 个答案:

答案 0 :(得分:1)

天真的实施:

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]

答案 1 :(得分:1)

numpy具有1d插值函数,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.])

我告诉interpx1范围之外的值返回0,这似乎很适合您的添加方案。

其他几种构建x3的方式:

加入2个列表,并询问唯一值(已排序):

x3=np.unique(x1+x2)

或者如果x可能已经是数组,请先连接它们:

x3=np.unique(np.concatenate([x1,x2]))