python随机数组,高斯噪声,多项式函数

    在前面的numpy的学习中忽略了这几个重要的知识点,导致今天做作业异常的艰难。现在十分必要将它记录下来。

1.np.random.*必须的是一个非常强的命令啊。不仅可以产生随机数(包括随机整数,实数;一维的,二维的等等),还可以产生正态分布的数(既可以用它来产生扰动或者是高斯噪声)。

(1)numpy.random.rand(d0d1...dn) shape为:(d0, d1, ..., dn)

(2)numpy.random.normal(loc=0.0scale=1.0size=None)loc 均值,scale 标准差,size大小。

>>> mu, sigma = 0, 0.1
>>> s = np.random.normal(mu, sigma, 1000)
>>> abs(mu - np.mean(s)) < 0.01
True
>>> abs(sigma - np.std(s, ddof=1)) < 0.01
True

Display the histogram of the samples, along with the probability density function:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, normed=True)
>>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
...                np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
...          linewidth=2, color='r')
>>> plt.show()

(3)numpy.random.uniform(low=0.0high=1.0size=1) 均匀分布一样的。

(4)多项式函数

p=np.poly1d(a),其中,a是多项式由高次到0次方的系数。

>>> a
array([ 0.97712037, -1.39644265, -0.96801519,  0.97348607,  0.4140714 ])
>>> p=np.poly1d(a)
>>> type(p)

还有一个可以用来做多项式拟合的函数:np.polyfit()


常用总结:

1,np.random.random(10)随机生成一个10个值(值的大小为0~1)的一维数组;   

2,np.random.rand(10,10)随机生成一个10*10(值的大小为0~1)的二维数组(还可以是任意维数组);

3 , np.random.randint(1,10,(4,5))随机生成一个4*5(值的大小为1~10)的数组(还可以为某个范围内的任意维数组);用 b = arange(20).reshape(4,5) 也可以达到这个效果。

4,np.random.randn(2,3)从标准正态分布中产生一个2*3的数组。

5,np.random.normal(2,0.5,(2,3))产生的是一个2*3的高斯噪声点数组集合(均值为:2,标准差:0.5)。

另外补充:

1.np.arange(0,1,0.1)产生的是0,0.1~0.9这10个点,要产生0,0.1~0.9,1的话将里面的1改为1.1就可以了;

2.for i in range(10)也是0到9的十个点;

3.np.linspace(0,1,10)产生的是0,1/9,2/9~1这10个点。因为有0的存在所以是将0到10均分为9分了。若是想产生0,0.1~0.9,1的化将里面的10设置为11.

    

你可能感兴趣的:(python,python,learning)