[NEFU]Python应用课程 PPT速记

Python

为了应试,被迫背单词。个人认为这种玩意,就该开卷考,然后丢你个实际点的题目让你做。

Numpy

代码含义
import numpy as np导入numpy库
a1=np.array([1,2,3,4,5,6])参数为列表的array函数实现方式
a2=np.array([1,2,3,4,5,6])参数为元组的array函数实现方式
b1=np.array([[100,98,99],[88,78,95]])参数为列表的array函数实现方式 二维数组
dem1=np.array([(0,0,0),(1,1,1),(2,2,2)])参数为列表嵌套元组的array函数实现二维数组
c1=np.array([ [[100,98,99],[88,79,95]], [[98,97,99],[89,91,68]] ])参数为列表的array函数实现三维数组
r1=np.array([‘b’,‘中国’,‘136’])字符串数组的建立
d1=np.array([True,False,0,1])布尔数组建立
np.alltrue(d1)测试数组d1是否全为True,返回True或者False
e1=np.array([10.5,6.22,7.28])浮点数组建立
e1.dtype显示数组类型
f1=np.array([100+2j,8J,2.1+3j])复数数组的建立,j和J都可以
g1=np.array([‘OK?’,10,'岁‘,0.3,False])numpy数组要求统一类型,否则自动转字符串型
arrange(start,stop,step,dtype=Node)以指定步长累加生成指定范围有序元素的数组
h1=np.arange(5)默认start=0,默认步长=1,生成[0 1 2 3 4],不包含最后一个
h2=np.arange(0,5)[0 1 2 3 4]
h3=np.arange(0,5,0.5)[0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
h4=np.arange(5,0,-1)[5 4 3 2 1]
linespace(start,stop,num=num_points,endpoint=True,retstep=False,dtype=None,axis=0)在指定的范围内返回均匀步长的样本数组
i0=np.linespace(0,1,2)[0. 1.],2个等分点每个差1/1
i1=np.linespace(0,4,4)PPT看效果,每个差4/3
i2=np.linespace(0,4,10)PPT看效果,每个差4/9
a=np.linespace(0.02,2,10,endpoint=False)endpoint=False不包含最后一点,每个差1.98/10
a=np.linespace(0.02,2,10,retstep=True)每个差1.98/9,返回步长以及序列数组,作为元组输出,看PPT
r=np.linespace(p,q,3,axis=0)p=np.array[[1,2],[3,4]],q=np.array([[5,6],[7,8]]),想一下结果
s=np.linespace(p,q,3,axis=1)想一下结果
zeros(shape,dtype=float,order=‘C’)产生值为0的数组,默认浮点型
z1=np.zeros(5)[0. 0. 0. 0. 0.]
ones(shape,dtype=None,order=‘C’)产生值为1的数组,dtype=None,但还是浮点
o1=np.ones((2,3))2行3列全1数组,浮点
empty(shape,dtype=float,order=‘C’)产生不确定值的数组
e10=np.empty(5)建立5个值不确定的一维数组
logspace(start,stop,num=,endpoint=True,base=10.0,dtype=None,axis=0)返回对数刻度上均匀间隔的数字,默认base=10.0
np.logspace(2.0,3.0,num=4)4个值分别为lgX=2,lgX=2.3333……,lgX=2.666……,lgX=3
full(shape.fill_value,dtype=None,order=‘C’)返回指定值的数组
f10=np.full(5,10)建立5个填充值为10的一维数组
f11=np.full((3,3),8)建立3x3,填充值为8的二维数组
eye(N,M=None,k=0,dtype=<clase’float’>)返回对角线为1,其他都为0的二维度数组
np.eye(4)建立4x4的主对角线为1的数组
repeat(a,repeats,axis=None)建立每个元素重复N次的数组,注意是元素不是整个数组
np.repeat([0,1,0],5)[0,0,0,0,0,1,1,1,1,1,0,0,0,0,0]
ar.ndim数组的维数,前面不用加np.也不用()
ar.shape数组的形状大小
ar.size数组元素的个数
ar.dtype数组元素类型
ar.itemsize返回数组元素字节大小
t2=t1.reshape(3,3).reshape()方法改变数组形状,t1改成3x3二维数组
m1=np.ones(9).all().all()方法判断是否全为非0,是则返回True,否则返回False
np.array([[1,0,2],[1,2,3]]).all(axis=1)从行方向判断每行的值是否都非0,这个例子返回array([False,True])
t1.any(axis=0).any()方法判断数组是否有非0值,有就返回True,否则返回False,这个例子是列方向判断
t1.any(axis=1)行方向判断是否有非零值
ar2=ar1,id(ar1),id(ar2)直接复制,ar1和ar2的id一样,如果改ar2,ar1也会变
ar0=ar1.copy()ar0内容和ar1一样,id不一样
a1.astype(float).astype()方法改变数组元素类型,把a1改成浮点型数组
np.vstack((c1,c2))垂直对接c1,c2两数组,c1c2要用()或者[]包起来,是作为一个参数!
np.hstack((c1,c2))水平对接c1,c2两数组
r6=np.hsplit(r5,2)把数组r5按第一维度等分,垂直切割为2个数组,注意split拼写末尾没有e
r6=np.vsplit(r5,2)把数组r5按第一维度等分,水平切割为2个数组
n1[9]一维数组,读取下标为9的元素
n1[-1]一维数组,读取从右往左第一个元素
n1[0]=10一维数组,指定下标修改值
n2=n1.reshape(2,5)把一维数组n1改成2x5的二维数组
n2[1,0]读取第二行第一列数据
n2[1,1]=-1第二行第二列数据修改为-1
n3=np.arange(12).reshape(2,2,3)2层x2行x3列的三维数组
n3[1,0,2]=-1第三维的第二2层,二维的第1行,一维的第3列的值改为-1
n3[1,…]等同于n3[1,],n3[1],当确定不了维度时可以通过下标右边…(:)省略号或者直接省略下标数来读取数组,例子把第2层的都给读取了
n3[1,…,2]不能用n3[1,2]会报错,读取第2层,第3列所有数据
n4[1][1]等价n4[1,1]但是效率很低
s1[1:4]取一维数组下标1到3的元素
s1[:5]取一维数组下标0到4的元素
s1[5:]取一维数组下标5到末尾的元素
s1[:-1]去一维数组下标0到倒数第二个元素,s1[-1]是倒数第一个,切片左闭右开
s1[::2]步长为2
s2[1:3]二维数组切片,取第2,3行子数组值
s2[:2]取1,2行子数组
s2[: , 2]取所有行,第三列子数组
s2[: , :2]取所有行,第1,2列子数组
s2[1,2:]取第2行,第三列到最后列子数组
s3[1,1,:]三维数组,取第2层,第2行所有列子数组
s3[0,:,:2]三维数组,取第1层,所有行,第1、2列子数组
fi1[[1,2,4,5]]一维数组,整数数组索引,利用整数数组的所有元素下标作为下标值进行索引
fi2[[1,2,3]]二维数组,一维整数数组索引,指定第2,3,4行。如果索引数组也是二维的那就直接对应到下标,看PPT
s4[b1]b1为布尔数组,可以用布尔数组做索引,看PPT
for g1 in d2: print(g1)数组g1=[0,1,2]作为元素集合,迭代输出d2元素
one+two数组和数组运算,基本都是每个元素和元素对应,也可以直接和标量做运算,PPT看一下即可
np.exp([1,2,3])底数为e,列表为指数
np.exp(1)标量作为指数
np.exp(n)n=np.arange(3),数组作为指数
np.log(np.e)求以e为底,e为真数的指数
np.log(c11)列表作为真数
np.log10(10)10为底,10为真数
np.log2(4)2为底,4为真数
np.sin(x),np.cos(x),np.tan(x),np.arcsin(y1),np.sinh(xx),np.cosh(xx),np.tanh(xx)各种三角函数
np.degrees(radian)弧度转角度,等效np.rad2deg(radian)
np.radians(degrees)/np.pi角度转弧度,等效deg2rad()
np.hypot(3,4)直角三角形求斜边
np.random.rand()产生[0,1)范围浮点数
np.random.rand(2,6)二维数组参数下,产生二维数组的随机数[0,1)
rn=np.random.randn(10)产生10个标准正态分布的随机数
random.randin(low,high=None,size=None,dtype=‘1’)产生指定范围的整形随机数,注意可以不用的参数
np.random.randint(4,size=8)产生[0,3]的8个随机整数
rn=np.random.randint(0,4,size=(2,2))产生[0,3]的4个随机整数构成2x2的二维数组
np.random.normal(loc= , scale= , size= )normal在这里是指正态分布,该方法通过loc和scale指定正态分布的均值和方差,返回一个数组,内容是从这个分布中随机取得的值,而size就是指定这个数组的大小
np.random.uniform(low=0.0,high=1.0,size=None)在[low,high)范围内产生均匀分布的随机数
np.random.poisson(lam=1.0,size=None)lam期望间隔,lam>=0.一列期望,间隔必须可以在请求的大小上播放(不懂什么玩意)
np.random.permutation(10)产生[0,9]的随机排序
np.random.permutation(x3)指定列表对象随机排序
x1=np.random.shuffle(x)直接对x数组乱序处理
np.random.choice(a,3)从a里随机取3个数,可以重复
np.random.choice(a,3,replace=False)从a里随机抽取3个数,不可以重复
np.random.choice(a,3,replace=False,p=[0.5,0.3,0.1,0.1,0])p对每个元素设置权重,总权重为1
np.unique(cx)cx去重
np.intersect1d(x1,y1)求两个数组的交集,注意是1d不是ld
np.union1d(x1,y1)求两个数组的并集
np.setdiff1d(x1,y1)求两个数组的差集
np.setxor1d(x1,y1)求两个数组异或集,去掉两个数组都有的元素
np.in1d(x1,y1)判断x1的元素是否在y1当中,返回长度和x1相同的布尔数组
np.sum(a1)求a1所有元素的和,可以用a1.sum()代替
np.nansum(a2)求和的时候忽略a2当中的NaN
np.prod(a1)求a1所有元素的积
np.prod(a1,axis=0)以列为单位求积
a1.max(axis=1)以行为单位求max
np.min(a1,axis=1)以行为单位求a1的min
np.cumsum(a1,axis=1)以行为单位,求累积和
np.mean(a1,axis=1)以行为单位,求元素的平均值
np.medina(a3)求a3的平均值
v1=np.var([3,2,1])求3,2,1的方差,可以用a1.var()代替
np.std([3,2,1])求3,2,1的标准差,可以用a1.std()代替
np.ptp(a1,axis=0)以列为单位,统计列轴最大和最小差
np.percentile(a1,50,axis=0)每个列方向取在50%位置的数
np.diff(a1)diff(a,n=1,axis=-1),默认n=1,求a1一阶差分
np.ediff1d(d1)数组连续元素之间的差异
np.ediff1d(d1,to_begin=[0,0],to_end=10)to_begin返回差异前面追加to_begin,末尾追加to_end,看PPT
np.gradient(g1)对一维数组元素进行梯度计算
np.gradient(g1)对二维数组的顺序元素进行梯度计算
np.trapz([1,2,3],[4,5,6],axis=1)以行为单位进行积分
np.sort(a1,axis=1)按行为单位进行排序(升序)
a1.sort(axis=0)用数组方法sort()排序,改变原有数组的排序
np.place(p1,p1>10,[0,1])对于数组里元素>10的元素一次用0,1代替
np.put(p2,[3,4,5],[0,0])替换顺序下标3,4,5的依次为[0,0]
np.put_along_axis(p3,np.array([[1],[1],[1]],0,axis=1))通过指定axis和花式索引将值放入目标数组
np.fiil_diagonal(z1,5)二维数组z1主对角线填充5
np.delete(d,np.s_[0:2],axis=1)在行方向上,删除d数组的1,2列,如果axis=None,删除后的数组组成一维数组
np.delete(d,np.s_[0:2],axis=0)在列方向上,删除d数组的1,2行
np.insert(b1,3,[2,2,2],axis=1)在行方向上,第4列处插入新列值
np.insert(b1,3,[2,2,2],axis=0)在行方向上,第4行处插入新行值
np.append(z1,[[1,1,1],[2,2,2],[3,3,3]],axis=1)在行方向末尾加新值
np.append(z1,[[1,1,1],[2,2,2],[3,3,3]],axis=0)在列方向末尾加新值,要求维数保持一直
np.trim_zeros([0,0,0,1,2,3,0,0])去除前导0和尾随0,返回[1,2,3]
np.around(f1)around(a,decimals=0)四舍五入函数,decimals为要保留的小数位数
np.rint(f1)简单取最接近的整数,四舍六入,五取偶
np.fix(f1)向0方向舍入到最接近的整数
np.floor(f1)取浮点数的整数部分舍去小数
np.ceil(f1)返回输入元素的上限整数
np.where(a1<=5,a1,10)where(condition,[x,y])如果conditon条件为True则迭代返回符合条件的x数组内的元素,否则y数组。a1数组元素小于等于5的标量,大于5的都设置为10
np.abs(a1)取绝对值

Pandas

代码含义
import pandas as pd导入pandas库
pd.Series(range(5))把Python的range对象转换为一维数组
pd.Series(range(5),index=list(‘abcde’))指定索引
pd.data_range(start=‘20180101’,end=‘20181231’,frq=‘H’)间隔为小时
pd.data_range(start=‘20180101’,end=‘20181231’,frq=‘D’)间隔为天
pd.data_range(start=‘20180101’,end=‘20181231’,frq=‘M’)间隔为月
pd.DataFrame(np.random.randn(12,4),index=dates,columns=list()‘ABCD’)index索引,columns列名
df.head()head默认前5行
df.head(3)显示前3行
df.tail(2)显示最后2行
df.index查看索引
df.columns查看列名
df.values查看值
df.describe()查看平均值,标准差,最小值,最大值等信息
df.sort_index(axis=0,ascending=False)对索引降序排序,原来的df不会变要重新赋值才变
df.sort_index(axis=1,ascending=Ture)对列进行升序排序
df.sort_values(by=‘A’)按A列对数据进行升序排序
df.sort_values(by=[‘E’,‘C’])先按E列升序排序,再按C列升序
df[‘A’]选择某一列
60 in df[‘A’]df[‘A’]是一个类似字典的结构;索引类似字典的键,默认访问字典的键而不是值
60 in df[‘A’].values测试60是否在A列的值当中
df[0:2]使用切片选多行,前闭后开,得到前2行
df.loc[:,[‘A’,‘C’]]选择多列
df.loc[[‘zhang’,‘li’],[‘A’,‘D’,‘E’]]同时指定多行和多列
df.loc[‘zhang’,[‘A’,‘D’,‘E’]]查看‘zhang’的三列数据
df.at[‘zhang’,‘A’]查看指定行列位置的值
df.iloc[3]查看二维数组第3行数据
df.iloc[0:3,0:4]查看二维数组前三行,前四列数据
df.iloc[[0,2,3],[0,4]]查询二维数组指定多行多列的数据
df.iloc[0,1]查询二位数组第0行第1列位置的数据值
df[df.A>50]查询A列大于50的所有行
df[df[‘E’]==‘test’]查询E列为‘test’的所有行
df[df[‘A’].isin([20,69])]查询A列值为0或69的所有行
df.nlargest(3,[‘C’])返回C列值最大的前3行
df.iat[0,2]=3修改指定行列位置的数据值
df.loc[: , ‘D’]=np.random.randint(50,60,4)修改某列的值
df[‘C’]=-df[‘C’]对指定列数据取反
dff=df[ : ]切片
dff[‘C’]=dff[‘C’]**2替换列数据
dff.loc[dff[‘C’]==‘9.0’,‘D’]=100把C列值为9的数据中的D列改为100
data=pd.DataFrame({‘k1’ : [‘one’]*3+[‘two’]*4,‘k2’:[1,1,2,3,3,4,4]})要知道玩意弄出来是啥样的,二维数组的映射
data.replace(1,5)把所有1替换成5
data.replace({1:5,‘one’:‘ONE’})使用字典指定替换关系
df1=df.reindex(columns=list(df.columns)+[‘G’])增加一列,列名为G,NaN表示缺失值
df1.dropna()返回不包含缺失值的行
df1[‘G’].fillna(5,inplace=True)使用指定值原地填充缺失值(不会覆盖原来有的)
data.drop_duplicates()返回新数组删除重复行
data.drop_duplicates([‘k1’])删除k1列的重复数据
data.drop_duplicates([‘k1’],keep=‘last’)删除k1列的重复数据,保留最后一个数据
col2=data[2]获取第二列的数据,要列名就是2就和data[‘A’]一样
col2[col2>3.5]查询该列中>3.5的数值
data[np.abs(data)>2.5]=np.sign(data)*2.5把所有数据都限定到[-2.5,2.5]之间
data[‘k1’]=data[‘k1’].map(str.upper)使用函数映射,k1列的值都变成大写的
data[‘k1’]=data[‘k1’].map({‘ONE’:‘one’,‘TWO’:‘two’})使用字典表示映射关系
pd.cut(data2,[0,30,70,100])数据切分,左开右闭,返回每个数据属于哪个区间(0,30],(30,70],(70,100]
pd.cut(data2,[0,30,70,100],right=False)数据切分,左闭右开,返回每个数据属于哪个区间[0,30),[30,70),[70,100)
pd.cut(data2,[0,30,70,100],right=False,labels=[‘low’,‘middle’,‘high’])用标签代替了属于哪个区间,返回每个数据属于哪个标签
pd.cut(data,4)平分成4个区间,左右包含最小和最大(不一定等于最小最大)
df1.shift(1)数据下移一行,空出来的NaN
df1.shift(-1)数据上移一行,空出来的NaN
df1[‘D’].value_counts()直方图统计,统计D列数据分布情况
df3=pd.concat([p1,p2,p3])数据行合并,p1p2p3为切片选出来的多行数据
df4.groupby(‘A’).sum()分组计算,根据A的值分组,然后对每列求出该组数据的和
df4.groupby([‘A’,‘B’]).mean()按A和B分组
df4.groupby([‘A’,‘B’],as_index=False).mean()as_index=False参数防止分组名变为索引
df.diff()纵向一阶差分,每行数据变为该行与上一行数据的差
df.diff(axis=1)横向一阶差分
df.diff(periods=2)纵向二阶差分
df.to_excel(‘d:\\test.xlsx’,sheet_name=‘dfg’)数据保存为excel
df=pd.read_excel(‘d:\\test.xlsx’,‘dfg’,index_col=None,na_values=[‘NA’])从excel读取数据
df.to_csv(‘d:\test.csv’)将数据保存为csv文件
df=pd.read_csv(‘d:\test.csv’)读取csv文件中的数据
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值