Python3---numpy的详细解读,小白疯狂收藏

    科技2022-07-10  91

    前言

    近日梳理python3 的numpy的相关知识点,故自我整理成笔记发布,一是供大家评论和建议,查缺补漏自我知识框架,二是可以进一步熟悉知识,达到更好的融汇贯通的情况,希望看到的兄弟姐妹可以不吝赐教,感激不尽!

    1.维度

    一维数组 二维数组 三维数组

    2.基本属性

    2.1数组创建

    1 列表转换法 import numpy as np list=[[1,2],[3,4],[5,6]] t=np.array (list2) print(t) ​ 2 arange函数法 ​ t=np.arange(24).reshape(4,6)

    2.2数组的基本属性

    查询数组的维度 print(t.ndim) 查询元素的个数 print(t.size) ​ 1形状 ​ 查询 print(t.shape) ​ 2改变 (1)原有的基础更改 ​ t.shape=(3,2) print(t) ​ (2)新设置的数组更改 x=t.reshape(3,2) print(x) ​ 3改变维度 (1)通过行的方式 print(t.reshape((6,))) ​ (2)通过列的方式 print(t.reshape((5,),order=‘F’) ) # 5代表是5个元素,默认是以行展开,order='F’是以列展开 的意思 ​ 4数组转化为list print(t.tolist())

     

    3.数组计算

    3.1轴与广播机制 一维数组(axis=0) 二维数组 axis=0代表列;axis=1代表行 三维数组 axis=0代表高;axis=1代表列;axis=2代表行 3.2数组&数 print(t+/-/*//数字) ​ 3.3数组&数组 1同种形状的数组 print(±*/数组,axis=0/1) ​ 2不同形状,只能和一维数组进行计算,并且一维数组的行/列其中一个,必须和多维数组相同,否则不同形状数组不能进行计算 ​ 3.4常用函数 np.max/min(t1) print(np.max/minimum (t1,t2)) #两者相比取最值 np.mean(t) #取平均值 print(t.cumsum(0)) #列求和

     

    4.数组的CRUD

    4.1索引和切片(查找)

    1)一维数组

    t=np.arange(10) (1)冒号分隔切片参数 start:stop:step来进行切片操作 print(t[2:7:2])# 从2-7,每间隔两个进行取数 ​ (2)如果只放置一个参数,如[2],将返回与该索引相对应的单个元素 print(t[2], t) ​ (3)如果为[2:],表示从该索引开始以后的所有项都将被提取 print(t[2:])

    2).二维数组

    (1)取值    a.取连续的行   单一行        print(t[0])        print(t[0,:])        多行        print(t[1:])  #取第二行到最后        print(t[1:3]) #取第二行到第三行        print(t[[1,3,5]]) #取第二行,第四行,第六行    b.取连续的列   单一列   print(t[:,1])   多列   取第二列到最后 print(t[:,1:])         取第二列到第三列 print(t[:,1:3])         取第二列,第四列,第六列 print(t[[:,1,3,5]])    c.取不连续的值    取某一个值 print(t[3,2])    取多个不连续的值 print([[0,1],[2,3]])

    3)修改

    (1)赋值 t[1:]=0 t[[0,1],[2,3]]=0 (2)逻辑 t[(t>10)&(t<23)]=0 和 t[(t>10)|(t<23)]=0 或 t[~(t>10)]=0 非 4.2添加(轴) 1新增 print(np.append(a,[5,3])) print(np.append(a,[[5,3]],axis=0)) print(np.append(a,[[5,3],[1,6]],axis=1)) (1)指定位置插入    print(np.insert(a,1,11,axis=1))    print(np.insert(a,1,[11],axis=0)) 2拼接 print(np.concatenate((t1,t2),axis=0)) (1)堆叠 print(np.stack((t1,t2),axis=0)) 3分割 print(np.split(t1,2)) 4.3删除 print(np.delete(a,2,axis=0)) 4.4去重 arr:输入数组,如果不是一维数组则会展开 retur_ index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储 return_ Inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储 return_ counts:如果为true,返回去重数组中的元素在原数组中的出现次数 a=np. array([[1,2,5],[3,4,6],[1,4,2]]) u=np.unique(a) u,indices=np.unique(a, return_counts=True) print(u) #输出去重后的展开数组 print(indices) #输出对应出现的次数

     

    5.NAN处理

    5.1特征

    1.数据类型:float ​ 2.nan!=nan  #空值不相等 ​ 3.nan与任何数计算都是nan

    5.2判断nan

    print(t=t) # 利用上述特征第二条 ​ print(np.isnan) #利用numpy自带的isnan函数进行判断 ​ 利用函数查看nan的数量 print(np.count_nonzero(t!=t))

    5.3处理nan

    1)删除(不影响数据的情况) 2)填充(平均数、中位数等) 步骤: 1.遍历数组,判断nan的个数是否为0; 2.不为0,取出存在nan那一行/列的非nan数据 3.对非nan数据求平均数/中位数 4.将以上的数值,赋值给nan

    5.4案例

    import numpy as np t=np,arange(24).reshape(4,6) t[2,3,6]=np.nan for i in range (t.shape[1]): #遍历所有列,行则为(t.shape[0]) a=t[:,i] #将每一列数据取出 b=np.count_nonzero(a!=a) #判断每一列中存在nan的个数 if b!=0: #如果个数不为0 c=np.mean(a[a==a]) #则取出存在nan列中不为nan的数并求平均值 a(np.isnan(a))=c #将平均值赋值给nan print(t)

    另,笔者能力有限,若文章出现错误,也拜托大佬在评论区指出,马上进行更改,不要因为笔者能力问题造成影响,误人子弟;

    本文未经本人允许,禁止转载,违者必究!

    另,笔者能力有限,若文章出现错误,也拜托大佬在评论区指出,马上进行更改,不要因为笔者能力问题造成影响,误人子弟; **

    本文未经本人允许,禁止转载,违者必究,欢迎关注!

    扫码关注公众号:“韩总说”,我们一起见证成长!公众号后台回复 7701,可获得本篇文章思维导图一份~~

    **

    Processed: 0.012, SQL: 8