numpy随机生成01矩阵_机器学习:Python常用库——Numpy库

870a329d0880a79646cdac5a12f67963.png

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第1张图片

图 | 源网络 文 | 5号程序员 01

从前面的学习中我们知道,机器学习是以大量数据为基础的。

由此就引出一个问题:那么多的数据我们要如何处理呢?

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第2张图片

别担心,嘻嘻,Python开发人员早有准备。

为了拓宽数据科学方面的应用,Numpy库应运而生。Numpy是Python用来进行矩阵运算、高维数组运算的数学计算库。

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第3张图片

接下来,我就简单介绍一下Numpy的相关使用。

02

导入Numpy库

为了书写方便,一般用别名np代替Numpy库(如果安装的是anaconda,Numpy库是自带的)。

import numpy as np
03

常用函数

导入Numpy库之后,可以用Numpy生成数组。使用array()函数可以生成一个数组,与列表的区别是没有逗号:

a = np.array([[1,2,3,4],[5,6,7,8]])print(a)

上方的代码将生成一个二维数组,结果如图:

dea31c0d14cb66db5a4710bc6b461c9a.png

如果想改变数组的维度,获取4行2列数组,可以通过reshape()方法实现:

b = a.reshape((4,-1))print(b)

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第4张图片

reshape()中的参数(4,-1)表示将数组转换为4*X的新数组,X等于数组a中元素个数的1/4。参数-1是一种“懒人”方法,表示由Python通过行参数4自动计算出列数。

此外,默认是按照行优先改变数据维度,也可以设置参数order="F",按照列优先改变数据维度:

c = a.reshape((4,2), order="F")print(c)

56b77532954900050c167e9e475b5122.png

虽然数组的维度没有改变,但是元素对应的位置已经不同了。

想要提取数组中的某些元素,可以使用切片的方式来提取。如提取第2行中的5和7:

d = c[1,:]print(d)

获取结果如图:

902f6f69ad6a419afe21f66d2ff84ca2.png

当然,也可以使用切片的方法修改数组中相应位置的数值,比如将数组c中第二列的中间两个数变为0,可以这样操作:

c[1:3,1] = 0print(c)

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第5张图片

可以看出,逗号左边表示行号,右边表示列号,由此就能任意截选出我们需要的数据。

数组不仅可以是二维的,也可以是多维的。下面生成一个三维数组e:

e = np.array([c,c*2])print(e)

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第6张图片

数组e是一个2*2*4的数组,也就是说由2个2*4的矩阵构成。

Numpy中的linspace()函数可以在指定的两个数之间生成固定数量的等间距(步长)数组,如:

f = np.linspace(start=1,stop=12,num=5)print(f)

1c1bb6f78d1df7649d2656a96cf397be.png

上方代码生成一个从1到12的5个等间距的数组。

如果想以指定的步长来生成一个向量,可以使用arange()方法,如从1开始,步长为3,生成小于等于12的向量:

g = np.arange(1,12,3)print(g)

结果:[1 4 7 10]

使用

ones()函数可以生成全1数组,如生成一个2*3的全1数组:

h = np.ones((2,3))print(h)

使用zeros()函数可以生成全0数组,如生成一个2*3的全0数组:

i = np.zeros((2,3))print(i)

若想生成单位数组(对角线为1,其余全是0),可以使用eye()函数,如生成一个3*3的单位数组:

j = np.eye(3)print(j)

cc796d05485f773ce34ec4e8dec65ab7.png

当然,也可以指定对角线的元素取值:

k = np.diag(np.arange(1,13,4))print(k)

d1d6a4a6c61cb752f4a30e50a1834c4f.png

使用diag()函数可以得到一个数组的对角线元素,也可以获取对角线的值:

l =np.diag(np.arange(1,26,3).reshape((3,3)))print(l)

结果:[ 1 13 25 ]

Numpy中的Random模块是用来生成随机数的有力工具,通过seek()方法能指定随机数种子,保证生成的随机数是可重复的。如要生成一个可重复的3*3随机数组,可以用如下方法:

np.random.seed(2)m = np.random.randn(3, 3)print(m)

b15b727f3683ff4a670d02ade723a8da.png

当然,一些常用的统计函数也能实现,如均值用mean()方法:

n = np.arange(10)print(n.mean())

497354ed19a34b417061f11bf9e842e8.png

标准差可以使用std()方法:

n = np.arange(10)print(n.std())

51d76ba84acaaa48ee9e3491170eff90.png

数组排序可以使用sort()方法,默认是每行自动排序:

p = np.sort([[2,5,3],[10,6,8]])print(p)

c3800f50981ae7c5a9d3365f5019d8e2.png

数组的百分位数可以用percentile()函数:

q = np.arange(10)print(np.percentile(q, 50))

497354ed19a34b417061f11bf9e842e8.png

中位数用median()函数:

q = np.arange(10)print(np.median(q))

497354ed19a34b417061f11bf9e842e8.png

当个数为偶数时,中位数是中间两个数字之和除以2。

Numpy的计算方法还有很多,大家可以去网上查阅,这里只说几个常用的。

04

Numpy主要以数组为操作对象,在生成和调整数组方面优势非常明显。但直接观察数组却不太方便,没有序号、排列不齐等问题并不利于我们寻找数据规律,所以我们需要继续学习。


下一次我们将介绍Pandas库,让数据的处理和操作变得更加简单快捷。

你确定不关注我一波?!

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第7张图片

- END -

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第8张图片

numpy随机生成01矩阵_机器学习:Python常用库——Numpy库_第9张图片

你可能感兴趣的:(numpy随机生成01矩阵)