python之数据分析numpy模块
2021-03-13 19:28
标签:二维 模块 标准 缓冲 二维数组 维数 学习 结果 imp python之数据分析numpy模块 标签:二维 模块 标准 缓冲 二维数组 维数 学习 结果 imp 原文地址:https://www.cnblogs.com/sunshineboy0307/p/14054002.html 1 #Numpy数组是一个多维数组对象,称为ndarry,其由两部分组成
2 #实际的数据 描述这些数据的元数据
3 #多维数组
4 import numpy as np
5 ar = np.array([1,2,3,4,5])
6 print([1,2,3,4,5])
7 print(ar,type(ar))
8 print(ar.ndim) #测算数据是几维数组(轴数 或者说是“秩”)
9 print(ar.shape)#数组的维度,对于n行m列的数组,shape为(n,m)
10 print(ar.size)#数组中元素的综述
11 print(type(ar),ar.dtype)#分别看数组的数据类型 和数组中元素的数据类型
12 print(ar.itemsize)#每个元素的字节大小
13 print(ar.data)#数据的缓冲位置
1 #如何创建多维数组 括号内可以是列表 元祖 数组 生成器
2 import numpy as np
3 ar1 =np.array(range(10))
4 ar2 =np.arange(10)
5 ar3 = np.array([1,2,3,4])
6 ar4 =np.array([[1,2,3,4],[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘]])
7 print(ar1)
8 print(ar2)
9 print(ar3)
10 print(ar4)
11 print(ar4,ar4.ndim)
12 print(np.random.rand(10).reshape(2,5))#随机生成10个数字并且按照两行五列的方式排布
1 #创建数组 arrange() 类似于range() 在给定的间隔内返回均匀间隔的值
2 print(np.arange(10))#返回0-9 整形
3 print(np.arange(10.0))#返回0.9-9.0 浮点型
4 print(np.arange(5,12))#返回5-11
5 print(np.arange(5.0,12,2))#返回5.0-12步长为2
6 print(np.arange(10000))#如果数值太大 无法打印 numpy会自动跳过数组的中心部分只打印边角
1 #创建数组 linspace() 返回在间隔【开始,停止】计算的num个均匀间隔的样本
2 print(np.linspace(10,20,num =21))
3 print(np.linspace(10,20,num =21,endpoint=Falese))#默认最后一个值不包含 默认是true
4 s= np.linspace(10,20,num =21,retstep=True)
5 print(s)
6 print(type(s))
7 print(s[0])
1 #创建数组 zeros()/zeros_like()/one()/one_like()
2 print(np.zeros((2,5),dtype=np.int))#改成整数型
3 ar = np.array([list(range(10)),list(range(10,20))])
4 print(ar)
5 print(np.zeros_like(ar)) #填充和shape一样的格式并且用0去填充
6
7 ar5 = np.ones(9)
8 ar6 = np.ones((2,3,4))
9 ar7 = np.ones_like(ar3)
10 print(ar5)
11 print(ar6)
12 print(ar7)
13 #ones()/ ones_like()和zeros()/zeros_like()一样只是填充的数值为1
1 #创建矩阵的数组 eyes() 单位矩阵
2 print(np.eye(5))
3 #数组形状 .T/.reshape()/.resize()
4 ar1 = np.arange(16)
5 ar2 = np.zeros((2,5))
6 print(ar1)
7 print(ar2)
8 print(ar1.T)
9 print(ar2.T)
10 #.T方法:转置 例如原shape()为(3,4),转置的结果为(4,3)并且一维数组
11 #转置后结果保持不变
12
13
14 print(ar1.reshape(8,2))
15 print(np.ones((10,10)).reshape(5,20))
16 print(np.reshape(np.arange(16),(2,8))) #先生成一个np.arange(16)的数组 随后用
17 #reshape将其分解为(2,8)的形式
18
19 #resize排序会自行进行调整
20 print(np.resize(np.arange(5),(3,4)))
21
22 ar2 = np.zeros((2,5))
23 print(ar2)
24 print(‘-------‘)
25 print(ar2.reshape(10))
26 print(ar2)
27 #reshape会重新生成一个数组 而不是在原来基础上改进
#数组的复制
ar1 =np.arange(10)
ar2 =ar1
print(ar2 is ar1)
ar1[2]=100
print(ar1,ar2)
ar3 =ar1.copy()
ar1[3]=100
print(ar1,ar3)
s = np.arange(10)
print(np.resize(s,(2,6)))
print(s.resize(2,6))
print(s)
#数组类型转换 astype() 将其转换成数值的类型
ar1 = np.arange(10,dtype = float)
ar2 = ar.astype(np.int64)
print(ar1,ar1.dtype)
print(ar2,ar2.dtype)
#数组堆叠
a = np.arange(5)
b= np.arange(5,9)
print(a)
print(b)
print(np.hstack((a,b)))#横向连接
print(‘------‘)
#纵向连接
a =np.array([[1],[2],[3]])
b= np.array([[‘a‘],[‘b‘],[‘c‘]])
print(a)
print(b)
print(np.vstack((a,b)))
print(‘------‘)
a = np.arange(5)
b= np.arange(5,10)
print(np.stack((a,b),axis=1))#默认作为纵向的堆叠 当设置为axis 为1时按照横向连接
#数组拆分 h为横向 v为纵向
ar = np.arange(16).reshape(4,4)
print(ar)
print(np.hsplit(ar,2)[0])
print(np.vsplit(ar,2))
#数组的简单运算
ar =np.arange(6).reshape(2,3)
priint(ar + 10) #加法
print(ar * 2 ) #乘法
print(1/(ar+1)) #除法
print(ar **0.5) #求幂
print(ar.mean())#求平均值
print(ar.max())#求最大值
print(ar.min())#求最小值
print(ar.std()) #求标准差
print(ar.var()) #求方差
print(ar.sum(),np.sum(ar,axis=0))#求和,np.sum() (axis为0 按列求和,axis为1 按行求和)
print(np.sort(np.array([1,4,3,2,5,6]))) #排序
1 #核心 ;基本索引以及切片
2 import numpy as np
3 ar =np.arange(20)
4 print(ar)
5 print(ar[4])#取数组的第五个元素
6 print(ar[:3])#取数组中的 0 1 2 三个元素 但是不包括第四个元素
7 print(ar[::2])#数组中每隔2个元素取一个
8 print(‘------‘)
9 #一维数组类似于list
10 ar= np.arange(16).reshape(4,4)
11 print(ar)
12 print(ar[2])
13 print(ar[2][2])#第三行中的第三个元素
14 print(‘---------‘)
15 print(ar[1:3])#从第第一行到第三行但是不包含第三
16 print(ar[2,2])#第三行第三列
17 print(ar[:1,2:])#先取第零行 再取第三列之后的
18 #二维数组索引
19
20 #切片相关知识繁琐 有理解不通的地方请参考廖雪峰老师的网站,里面做了很详细的讲解
21 #https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856
1 ar=np.arange(12).reshape(3,2,2)
2 print(ar)
3 print(ar[2])#索引第三个数组
4 print(ar[2][1])#索引第三个数组中索引为2的行
5 print(ar[2][1][0])#索引第三个数组中索引为2的行中的第一个元素
#布尔值的切片和索引
ar = np.arange(12).reshape(3,4)
print(ar)
i = np.array([True,False,True])
j = np.array([True,True,False,False])
print(i)
print(j)
print(ar[i,:])#按照i里的true来选择行 列不做选择 保留true的值
print(ar[:,j])##按照j里的true来选择行 行不做选择 保留true的值
print(‘-------‘)
#布尔值索引:以布尔型的矩阵去做删选
print(ar>5,type(ar>5))
print(ar[ar>5])
1 import numpy as np
2 print(np.random.normal(size=(4,4)))
3 #生成一个标准正态分布的4*4的样本值
4
5 #numpy.random,rand() 生成一个【0,1】之间的随机浮点数或者N维浮点数组 均匀分布
6 a = np.random.rand()
7 print(a,type(a))
8 print(np.random.rand(4))#生成一维的随机数组包含四个
9 print(np.random.rand(2,4))#生成二维的随机数组包含八个
10
11 #numpy.random,randn() 生成一个的随机浮点数或者N维浮点数组 正态分布
12 data3 = np.random.randn(500)
13 data4 = np.random.randn(500)
14 import matplotlib.pyplot as plt
15 %matplotlib inline
16 plt.scatter(data3,data4)
17 #随机选择500个样本数值的data1 和data2 然后用plt画出其分布图
18
19 #numpy.random.randint(low,high=None,size=None,dtype=‘1‘)生成一个整数或者N维整数数组
20 #若High不为None时,取[low,high]之间的随机整数,否则取值[0,low]之间的随机整数,并且high必须大禹low
21 #dtype参数,只能是int类型
22
23 print(np.random.randint(2))
24 print(np.random.randint(2,10))
25 print(np.random.randint(10,size=10))#size表示10个数字
26 print(np.random.randint(10,size=(2,5)))#size表示数组类型 一维二维
import os
os.chdir(‘C:/Users/11786/Desktop‘)
#存储数据文件 .npy文件
ar = np.random.rand(5,5)
print(ar)
np.save(‘text.npy‘,ar) #要谨记save()函数的格式,前面参数为存储的文件名 后面为存储的数据
print(‘finished‘)
#读取文件 .npy文件
ar_load =np.load(‘text.npy‘)
print(ar_load)
ar = np.random.rand(5,5)
print(ar)
np.savetxt(‘save_txt.txt‘,ar,delimiter=‘,‘,fmt=‘%.2f‘)#delimiter参数为分隔号的类型 fmt参数为存储的类型 savetxt存储为txt文件
print(‘finished‘)
ar_loadtxt = np.loadtxt(‘save_txt.txt‘,delimiter=‘,‘)#loadtxt为加载文件类型为txt
print(ar_loadtxt)
以上代码为学习参考使用 如有侵权 请联系作者删除
文章标题:python之数据分析numpy模块
文章链接:http://soscw.com/index.php/essay/64240.html