在前面的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&#61;1)) <0.01
True
Display the histogram of the samples, along with the probability density function:
>>>import matplotlib.pyplot as plt
>>>count, bins, ignored &#61; plt.hist(s, 30, normed&#61;True)
>>>plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
... np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
... linewidth&#61;2, color&#61;&#39;r&#39;)
>>>plt.show()
(3) numpy.random.
uniform
(
low&#61;0.0
,
high&#61;1.0
,
size&#61;1
) 均匀分布一样的。
(4)多项式函数
p&#61;np.poly1d(a),其中&#xff0c;a是多项式由高次到0次方的系数。
>>> a
array([ 0.97712037, -1.39644265, -0.96801519, 0.97348607, 0.4140714 ])
>>> p&#61;np.poly1d(a)
>>> type(p)
还有一个可以用来做多项式拟合的函数&#xff1a;np.polyfit()
常用总结&#xff1a;
1&#xff0c;np.random.random(10)随机生成一个10个值(值的大小为0&#xff5e;1)的一维数组&#xff1b;
2&#xff0c;np.random.rand(10,10)随机生成一个10*10(值的大小为0&#xff5e;1)的二维数组(还可以是任意维数组)&#xff1b;
3 ,
n
p.random.randint(1,10,(4,5))
随机生成一个
4*5(值的大小为1&#xff5e;10)的
数组(还可以为某个范围内的任意维数组)&#xff1b;
用 b &#61; arange(20).reshape(4,5) 也可以达到这个效果。
4&#xff0c;np.random.randn(2,3)从
标准正态分布
中产生一个2*3的数组。
5&#xff0c;np.random.normal(2,0.5&#xff0c;(2&#xff0c;3))产生的是一个2*3的高斯噪声点数组集合(均值为&#xff1a;2&#xff0c;标准差&#xff1a;0.5)。
另外补充&#xff1a;
1.np.arange(0,1,0.1)产生的是0&#xff0c;0.1&#xff5e;0.9这10个点&#xff0c;要产生 0&#xff0c;0.1&#xff5e;0.9&#xff0c;1的话将里面的1改为1.1就可以了&#xff1b;
2.for i in range(10)也是0到9的十个点&#xff1b;
3.np.linspace(0,1,10)产生的是0&#xff0c;1/9&#xff0c;2/9&#xff5e;1这10个点。因为有0的存在所以是将0到10均分为9分了。若是想产生 0&#xff0c;0.1&#xff5e;0.9&#xff0c;1的化将里面的10设置为11.