Numpy学习笔记

Numpy属性

import numpy as np

array=np.array([[1,2,3],[2,3,4]])#将列表转化为数组
array.ndim#返回维度
array.shape#返回数组形状
array.size#返回数组元素个数
array.dtype#返回数组元素的类型

创建各种Numpy数组

a=np.array([[1,2,3],[2,3,4]],dtype=np.int64)#一般用list来创建,设置数组元素数据类型
a=np.zeros((3,2))#生成三行两列的0矩阵
np.zeros_like(a)#生成shape(a)的0矩阵

a=np.ones((3,2))#生成三行两列的1矩阵
np.ones_like(a)#生成shape(a)的1矩阵

np.empty((3,2))#生成三行两列的未初始化矩阵
np.empty_like(a)#生成shape(a)的未初始化矩阵

np.full((3,2),333)#生成三行两列的值全为333矩阵
np.full_like(a,333)#生成shape(a)的值全为333矩阵

a=np.arange(10,20,0.2)#生成等差数组,步长为0.2
a=np.arange(10,20).reshape(2,5)#reshape改变数组的形状

a=np.linspace(10,20,50)#生成10-20的等差数列,一共50个,同时可以用.reshape来改变其形状

Numpy基础运算

a=np.array([10,20,30,40])
print(a<15)#判断数组内元素,返回一个bool型数组(也支持其他比较运算符)
>>>[ True False False False]

np.dot(a,b)#矩阵乘法
或者写成a.dot(b)


np.argmax()#返回最大值的索引
np.argmin()#返回最小值的索引

np.diff()#返回每两个数的差
np.nonzero()#返回非0元素的行号和列号
np.sort()#对数组排序
np.transpose()#矩阵转置
np.clip(a,start,stop)#对数组a,返回使a小于start的数变为start,大于stop的数变为stop
 
numpy赋值
b=a,则a与b是相同的,改变a,则b也会被改变
np.copy()#只copy值

c = a.astype(数据类型liststr...)#转换a元素的类型
ndarray.T#数组的转置
ndarray.astype(type)#类型修改
np.unique()#去重
np.around() #函数返回指定数字的四舍五入值

Numpy数学统计函数

np.sum			所有元素的和
np.prod			所有元素的乘积
np.cumsum		所有元素的前缀和
np.cumprod		元素的累加乘积
np.min			最小值
np.max			最大值
np.percentile	0-100百分位数
np.quantile		0-1分位数
例如:np.percentile(arr,[25,50,75])整体序列25% 50% 65% 处的数字
>>>array([3.75, 6.5 , 9.25])
np.median		中位数
np.average		加权平均数
np.mean			平均值
np.std			标准差
np.var			方差
axis参数的用途:
axis=0代表行,axis=1代表列
对于聚合函数:
理解1:axis=0表示把行消解掉,axis=1代表把列消解掉
理解2:axis=0代表跨行计算,axis=1代表跨列计算

axis=0可以看成沿着行数增大/减小的方向操作,axis=1可以看成沿着列数增大/减小的方向操作

Numpy常用np.random.随机函数

seed([seed])#设定随机数种子,每次运行生成的随机数相同

rand(d0,d1,...,dn)#返回数据在[0,1)之间,具有均匀分布,d0、d1....dn为维度

randn(d0,d1,...,dn)#返回数据具有标准正态分布(均值0,方差1)d0、d1....dn为维度

randint(low[,hight,size,dtype])#生成随机整数,包含low,不包含hight,若hight不指定则从[0,low)中生成随机数,size为元组维度

random([size])#生成[0.0,1.0)的随机数

choice(a[,szie,replace,p])#a是一个数组,从它里面生成随机结果(a为数字时,从range(5)中生成随机数),size=(维度)

shuffle(x)#把数组x进行随机排列(若x为1维,则随机打乱数字;若x为2维,则随机打乱1维数组的顺序)

permutation(x)#生成数字的全排列(x为数字时,返回range(x)随机打乱后的结果,若为数组则与shuffle(x)一样,打乱一维数组的顺序)

normal([loc,scale,szie])#按照平均值loc和方差scale生成高斯分布的数字

uniform([low,hight,size])#在[low,high)之间生成均匀分布的数字
import matplotlib.pyplot as plt
#绘制sinx
x=np.linspace(-10,10,100)
y=np.sin(x)
plt.plot(x,y)
#加入噪声
x=np.linspace(-10,10,100)
y=np.sin(x)+np.random.rand(len(x))
plt.plot(x,y)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lj3blQvC-1666710033252)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221023205838491.png)]

添加Numpy数组维度

np.newaxis:使用索引的语法给数组增加维度
np.expend_dims(arr,axis):给aarr在xis位置添加维度
np.reshape(arr,newshape):给一个维度设置为1,完成升维
np.newaxis就是None的别名(下面的np.newaxis都可以用None代替)

给一维数组添加一行
arr[np.newaxis,:]
给一维向量添加一列
arr[:,np.newaxis]
np.expend_dims(arr,axis)实现方法与np.newaxis是一样的

给一维数组添加一行
np.expend(arr,axis=0)
给一维向量添加一列
np.expend(arr,axis=1)
np.reshape(arr,newshape)

给一维数组添加一行
np.reshape(arr,(维度)):np.reshape(arr,(1,-1))
给一维向量添加一列
或:np.reshape(arr,(-1,1))

Numpy数据合并操作

在机器学习中,经常会遇到下面情况:
1.添加多行,增加样本数量
2.添加多列,增加样本特征
np.concatenate(array_list,axis=1/0):沿着指定方向axis进行数组合并

np.vstack或者np.row_stack(array_list):垂直vertically、按行row wise进行数据合并

np.hsstack或者np.column_stack(array_list):水平horizontally、按列column wise进行数据合并
#增加新的行
a=np.arange(6).reshape(2,3)
b=np.random.randint(10,20,size=(4,3))

np.concatenate([a,b])

np.vstack([a,b])

np.row_stack([a,b])
三种方法都行

#增加新的列
a=np.arange(12).reshape(3,4)
b=np.random.randint(10,20,size=(3,2))

np.concatenate([a,b],axis=1)

np.hstack([a,b])

np.column_stack([a,b])

总结

建议去相关编程网站练习,要不容易忘记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chp的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值