在前面的numpy的学习中忽略了这几个重要的知识点,导致今天做作业异常的艰难。现在十分必要将它记录下来。
1.np.random.*必须的是一个非常强的命令啊。不仅可以产生随机数(包括随机整数,实数;一维的,二维的等等),还可以产生正态分布的数(既可以用它来产生扰动或者是高斯噪声)。
(1)numpy.random.rand(d0, d1, ..., dn) shape为:(d0, d1, ..., dn)
(2)numpy.random.normal(loc=0.0, scale=1.0, size=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.0, high=1.0, size=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.