机器学习储备(10):numpy之RandomState() 和 axis

戳上面的蓝字关注我们!机器学习储备(10):numpy之RandomState() 和 axis


作者:alg-flody

编辑:Emily


1 RandomState


RandomState是一个伪随机数发生器,这是一个numpy的类,其中包括的方法有:rand,randint,uniform 等。


这个类是含有一个参数:种子数的构造函数,它的取值范围为0~2**32-1的任意整数,可以缺省。


用法举例:

#导入numpy

import numpy as np

#实例化RandomState,种子数设置为1 。

rng = np.random.RandomState(1)

#引用rand生成0~1的2行5列的二维数组

rng.rand(2,5)

生成的二维数组如下所示:

array([[  4.17022005e-01,   7.20324493e-01,   1.14374817e-04,

          3.02332573e-01,   1.46755891e-01],

       [  9.23385948e-02,   1.86260211e-01,   3.45560727e-01,

          3.96767474e-01,   5.38816734e-01]])

#引用uniform生成取值范围在0~3的100行2列的均匀分布的二维数组

a = rng.uniform(0,3,(100,2))


机器学习储备(10):numpy之RandomState() 和 axis




2 axis


numpy中许多API的参数都带有:axis,它的作用是什么呢? 请看下面例子:


上面生成的100行2列的二维数组,如果这样求和得到的是什么呢?


np.sum(a,axis=0)

输出结果:

   array([ 134.70958663,  156.50550662])

如果这样求和呢?

np.sum(a,axis=1)

输出结果:

array([ 3.41203949,  0.90734084,  0.71728346,  1.59546282,  2.80675262,

        3.31324204,  3.24770906,  2.09356531,  2.92798389,  1.01546528,

        5.30701843,  3.01724038,  5.31298745,  0.37229698,  3.14391877,

        1.55836338,  4.47316445,  3.02217823,  4.5633798 ,  2.30529778,

        5.21108023,  3.20916996,  1.6533586 ,  3.60662895,  1.25341173,

        2.09460747,  1.43152433,  1.63480711,  2.16253854,  3.86719169,

        1.54917125,  3.32573828,  1.75754959,  3.53605127,  4.59344939,

        3.12262986,  2.84000291,  1.6890931 ,  3.82582332,  4.43043027,

        4.52093489,  3.29952233,  3.49744233,  4.17879371,  3.85541165,

        3.19270569,  3.08490524,  1.93549135,  4.43117702,  1.86004572,

        2.56110901,  3.72963558,  4.5956858 ,  2.83577543,  5.0646593 ,

        0.92842877,  4.88824087,  2.46438968,  5.03070217,  2.50738716,

        0.13827336,  0.82355267,  4.19657704,  4.18455861,  1.21007098,

        4.66606506,  1.73903253,  3.10082084,  3.58489752,  4.83199049,

        2.07808638,  0.54378344,  0.45613802,  2.81609496,  1.71681889,

        3.11775183,  2.31418109,  2.9884548 ,  2.33036523,  5.45054637,

        2.20085242,  4.34680985,  0.52610279,  1.66910176,  3.5255427 ,

        3.91793569,  2.87965918,  3.88884795,  2.80245735,  1.3092571 ,

        2.51967455,  2.45787611,  3.19520899,  2.49868549,  4.34843484,

        0.98777358,  4.52173198,  5.51936377,  0.74494098,  4.69738403])


因此,axis总结如下:

axis = 0后,即对第一维求和,结果中看不到这一维;

axis = 1后,即对第二维求和,结果中看不到这一维;

依次类推


再看一个多维数组排序例子:

testX = np.array([[1,9,7],[-10,20,4]])

array([[  1,   9,   7],

          [-10,  20,   4]])

执行操作:np.sort(testX,axis=0)

得到的结果如下:

array([[-10,   9,   4],

          [  1,  20,   7]])


即axis=0,按照第一维排序二维数组,得到的结果如上。


因此,对于sort这类API的axis总结如下:

axis = 0后,即按照第一维排序,维数不变;

axis = 1后,即按照第二维排序,维数不变;

依次类推

机器学习储备(10):numpy之RandomState() 和 axis

交流思想,注重分析,看重过程,包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战,英语沙龙,定期邀请专家发推。期待您的到来!