2016-03-01 43 views
3

假设我想从线性函数生成100个左右的数据点,那么最好的方法是什么?numpy从线性函数生成数据

一个例子线性函数y = 0.4*x + 3 + delta

其中,δ是从均匀分布在-10和+10

我要为每个数据点要产生增量,得到一些扰动到之间绘制的随机值数据。

import numpy as np 

d = np.random.uniform(-10, 10) 

这似乎符合三角洲法案,虽然我不确定如何产生其余的合并。

回答

2

我不知道你是怎么想产生X,但是这将工作:

In [7]: x = np.arange(100) 

In [8]: delta = np.random.uniform(-10,10, size=(100,)) 

In [9]: y = .4 * x +3 + delta 

enter image description here

+1

'plt.plot(X,Y)''然后plt.show()'我想你可以在关键字ARG'线型通=”。 “'只显示单个数据点。 http://matplotlib.org/users/pyplot_tutorial.html –

+0

对不起,我说得太快了,原来这很简单。我用'plt.plot(y,'x')'来获取数据点。 –

+1

只是要清楚。没有第一个x变量的plt.plot(y,'x')会导致x轴的np.arange(0,len(y))被推断出来。如果你计算y使用任何其他范围,比如-50到50,图表将不正确 –

1

这一切,而取决于你要评估你的函数是什么x值。假设你想从-50到50进行绘图,只需使用x = np.arange(-50,50),但你需要d = np.random.uniform(-10, 10, x.size)

然后只需运行你的功能:y = 0.4*x + 3 + delta

在另一方面,如果你想有一个线性间隔x你也可以使用np.linspace或logarithmicly间隔xnp.logspace

最后,它可能看起来像:

x = np.linspace(0, 100, 1000) # 1000 values between 0 and 100 
# x = np.arange(-50, 50) # -50, -49, ... 49, 50 
delta = np.random.uniform(-10, 10, x.size) 
y = 0.4*x + 3 + delta