首页 > 编程语言 >[NEFU]Python应用课程 PPT速记

[NEFU]Python应用课程 PPT速记

时间:2022-11-25 19:42:14浏览次数:41  
标签:a1 Python NEFU df 数组 PPT np array axis


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文件中的数据


标签:a1,Python,NEFU,df,数组,PPT,np,array,axis
From: https://blog.51cto.com/u_15891800/5887530

相关文章

  • [Python]numpy数据分析练习[21~30]
    [Python]numpy数据分析练习[21~40]​​题目和解析地址​​此博客主要用于自己做些知识点笔记题目和答案21.如何在numpy数组中只打印小数点后三位?只打印或显示numpy数组ran......
  • [NEFU ACM大一暑假集训 解题报告]字典树
    [NEFUACM大一暑假集训解题报告]字典树题目A-L语言多模式匹配,AC自动机建立Trie图。不过这个题数据量很小,貌似可以暴力建立跳转关系,加上标记处理即可。对于样例的AC自动......
  • [NEFU ACM大一暑假集训 解题报告]前缀和与差分
    [NEFUACM大一暑假集训解题报告]前缀和与差分题量略大,所以解题报告和fjy大佬分了一下工由我负责A-K部分题解(不是AK部分题解啊,哈哈)后半部分题解(LM+R~V+XYZ)由fjy大佬发布......
  • [Python]常用代码块
    [Python]常用代码块3天速通了一波pythonPTA的语法题,感觉和c/c++差不了太多吧。东西很少都是基础的玩意,主要防止暑假上去忘记了,以后如果有别的那再补充好了。代码片段输入每......
  • [NEFU ACM] 2020级暑期训练 解题报告
    [NEFUACM]2020级暑期训练解题报告Author:2020-计6-zslID:FishingRod阅读须知需求指向:NEFU2020级ACM暑期训练参与人员解题报告博客偏向题解代码展示,解题视频偏向思路讲解......
  • [NEFU ACM大一暑假集训 解题报告]尺取法
    [NEFUACM大一暑假集训解题报告]尺取法前四题为例题,学长讲过了,直接贴代码了。题谱题目A-Subsequence求总和>=s的最短区间#include<cstdio>#include<cstdlib>#include<cma......
  • [NEFU 数据结构] 第 2 章 线性表 知识点整理
    [NEFU数据结构]第2章线性表知识点整理阅读须知需求指向:此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法艺术的同学。前置知识:C语言......
  • [NEFU]数据结构 知识点整理和代码实现
    [NEFU]数据结构知识点整理和代码实现Author:2020-计6-zslID:Fishingrod阅读须知需求指向:此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法......
  • [NEFU 数据结构] 第 1 章 绪论 知识点整理
    [NEFU数据结构]第1章绪论知识点整理阅读须知需求指向:此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法艺术的同学。前置知识:C语言参......
  • python_小练习
    #3种forin区别#foriteminlist:#item为列表元素#foriinrange(len(list)):#i为列表索引#forkeyindict:#key为字典的键#建议餐厅录入系统#创......