2016-03-01 41 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