【机器学习入门】numpy的主要用法

1、numpy.array
基本操作与Python的list差不多
其他操作:

np.zeros(10,dtype=int) # 生成10个0,类型为整型
np.zeros(shape=(3,5),dtype=int) # 生成3行5列的类型为整型的矩阵 
np.ones(10,dtype=int)  # 生成10个5,整型

np.full(shape=(3,5),fill_value=666) # 生成3行5列,值为666的整型矩阵

2、numpy.arange
基本操作与range一样
numpy可传入浮点数

np.arange(0,9,0.2) # 从0到9,步长为0.2,生成array

3、numpy.linspace(包含起始终止点)
等长截取数列

 np.linspace(1,10,2) # 从1到10,等长分为2个

4、numpy.random(前闭后开,取不到终止数)

np.random.randint(0,10,size=10) # 随机生成长度为10,从0到10的array
np.random.randint(0,10,size=(3,5)) # 随机生成3行5列,从0到10的array

np.random.seed (123) # 随机种子,使random出来的是指定的
np.random.random() # 类型为浮点型

np.random.normal(0,1,(3,5)) # 根据均值和方差产生浮点数,均值为0,方差为1,3行5列

5、numpy.concatenate([x,y]) # 拼接x,y

np.concatenate([x,y],axis=1) # axis为纬度,这里沿着行进行拼接,结果为2维,0为沿着列

6、numpy.vstack()\numpy.hstack() #在竖直或水平方向上进行堆叠

7、numpy.split(x,[3,7]) # 分割,起始分割点为3,结尾为7
np.vsplit(a,[2]) # 垂直分割,起始点为2

juper notebook中可以在末尾用"?"来查看文档

对于X=np.array()

属性
1、X.ndim
查看纬度

2、X.shape
查看结构

3、X.size
查看大小

方法:
X.reshape(2,5) # 根据对象生成2行5列的矩阵,注意,不改变X自身

取值:
1、X[0,:] # 取第一行,列取从头到尾

计算

给定一个向量,让向量中每一个数乘以2

L=np.arange(10000)
A=np.array(2*e for e in L)

上面的操作等价于

A=2*L # 在list中不行,list是将两个数组连接起来

numpy中支持所有的直接数学计算,包括矩阵(对应元素计算),同时支持函数,比如A.cos()等

矩阵计算
矩阵乘法:A.dot(B)
矩阵转置:A.T
矩阵的逆:
np.linalg.inv(A) # 矩阵必须是方阵
np.linalg.pinv(A) # 伪逆矩阵,不需要是方阵,如2X8的矩阵求逆后就是8X2,与原矩阵相乘近乎为单位阵
矩阵的排序:A.sort() # 默认按照每一行排序,沿着列的方向排序,即axis=1

向量矩阵运算
向量与矩阵相加:

v=np.array([1,2])
v+A # 矩阵中每一行与向量对应相加

向量与矩阵相乘:

v.dot(A)

聚合计算
一组数据进行计算,结果为单独的值
求和:

np.sum() # 效率比公共库sum()高
np.sum(A,axis=0) # 每一列进行计算(沿着行进行计算,去行)
np.sum(A,axis=1) # 每一行进行计算(沿着列进行计算,去列)

求积:

np.prod()

求百分位:

np.percentile(A,q=50) # 小于50有多少百分位

最小值:

np.min()

中位数:

np.median()

平均值:

np.mean()

方差:

np.var()

标准差:

np.std()

索引与排序

np.argmin() # 返回最小值的索引值
np.argsort() # 将从小到大的数进行排序,并把索引值存入array
np.partition(x,3) # 将小于3的放左边,大于3的放右边,不进行排序

Fancy Indexing

取索引值相应的值组成列表

index=[3,5,8]
x[index]

即可得到,这里的index也可以是二维数据,得到对应的二维矩阵

取对应坐标对应的值组成列表

row=[0,1,2]
col=[0,1,2]
x[row,col]

即可得到想要的值

col=[True,False,True]
x[row,col]

也可以用这种方式取得想要的值

比较
x<3
返回bool型的数组

np.sum(x<3) # 计算小于3的数组的值,这个数组是布尔数组,计算的也就是小于3有多少个数

同理,可统计奇偶数

np.sum(x%2==0)

与或非的使用

np.sum((x>3)&(x<10)) # 与运算,和位运算相似

np.sum((x>3) | (x<3)) #或运算

np.sum(-(x>3)) #非运算

取值

x[x>2]

以上就是numpy的主要用法,一般用来处理简单的数据,复杂的数据,都先用pandas,然后转成numpy,最后用sklearn进行机器学习运算

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值