python之数据分析numpy模块

2021-03-13 19:28

阅读:683

标签:二维   模块   标准   缓冲   二维数组   维数   学习   结果   imp   

 

 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模块

标签:二维   模块   标准   缓冲   二维数组   维数   学习   结果   imp   

原文地址:https://www.cnblogs.com/sunshineboy0307/p/14054002.html


评论


亲,登录后才可以留言!