numpy作为python机器学习里面重要的数学库,里面放着很多我们机器学习算法中需要的方法,这里挑几个来讲讲
arr1 = np.random.randint(10, 40, [5,8])
意思是生成一个5行,8列的,大小范围在10到40的整型随机矩阵
numpy.zeros([3,5], dtype=int)
第一个值可以是数组,也可以是数字,如果是是数字就是生成n个0的一维矩阵,第二个参数dtype是矩阵里面的类型,如果不加,矩阵里面的数值默认是浮点型,如果加了int,就int类型
arr = numpy.ones([4,3], dtype=int)
和zeros差不多,不过这个是生成全是1 的矩阵,数学也称之为单元矩阵,向量也是1
arr = numpy.full([3,7], 999)
如果是想自己生成一个全是同一个数的矩阵,就用full
numpy.random.seed(444)
numpy.random.randint(20, 10000, [3,5])
上面这种写法是说,随机种子固定是444,然后生成一个随机矩阵,这种主要是用来既想生成一个随机矩阵,又想这个随机矩阵只生成一次后面全部都用同一个的情况,当然也可以将生成的随机矩阵保存到另外一个变量中。随机种子一旦固定下来,生成的随机矩阵也是不会变化的
上面所说的都是生成二维矩阵
numpy.arange(10, 20, 3)
arange是生成一个一维矩阵,但是如果想用这个一维矩阵转化成二维的呢
用reshape来转化,里面的[2,-1]是说,生成一个2行,列数由计算机帮我算出来的矩阵,所以这里填了-1,这里其实就相当于[2,2],不过当一维矩阵数值很大的时候,我们就只需要知道我们需要一个多少行或者多少列的数字,另外一个数就由计算机帮我们算好即可
numpy中还有两个属性可以查看矩阵的信息
ndim 查看矩阵维度,size 查看整个矩阵有多少个元素
最后讲下numpy里生成一个符合正态分布的随机矩阵
np.random.normal(4, 100, 20)
这是一个均值为4,方差为100的正态分布的随机矩阵,均值就是这个正态分布图形的对称轴,方差就是整个图形的宽度,方差越大,说明这一组数值越不稳定,越小就越稳定
最后讲讲如果获取矩阵里面的值
有两种
arr[1][1] 和 arr[1,1]
都是获取第2行的第2列,但是两者效率是有区别的
从上图可以看出,arr6[3000, 10000]明显要比arr6[3000][10000]快的,时间差不多快了一倍,为什么呢
意思应该就是arr6[3000][10000]这种会先为第一维创建一个索引数组,创建完之后再去创建第二维的索引数组,之后再检索
而arr6[3000, 10000]这种针对整个矩阵创建一个索引数组,然后就直接检索了