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

前言

近日梳理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,可获得本篇文章思维导图一份~~

**
Python3---numpy的详细解读,小白疯狂收藏_第1张图片

你可能感兴趣的:(数据分析笔记,python,numpy,数据分析)