python数据分析-numpy数值分析与计算操作

numpy数值分析与计算操作

话不多说,上代码吧!

1.创建数组

##创建一维数组
nd2=np.array([12,25,25,366,54,85,69])#
print(nd2) #
#创建二维数组
nd=np.array([[12,25,34],[34,43,23],[23,34,34]])#
print(nd)

上述代码即为创建数组的代码,可以创建一维数组,二维数组或者三维数组,看你需要数据的结构而定

注:np.array函数中有一个参数dtype可以对其进行赋值,来决定数据的类型

2.得到数组相应的信息

 print(type(nd)) 
 print(nd.shape) 
 arr3=np.array([[1,2],[1,5,2]])
 print(arr3)
 print(arr3.shape)#数组维度
 print("nd维度:",nd.ndim)
 print("nd2维度:",nd2.ndim)
 #元素个数
 print(nd2.size)
 print(nd.size)
 #元素类型
 print(nd2.dtype)
 print(nd.dtype)

上述代码将之前创建的数组信息输出
分别是
数组的结构、维度、元素个数、元素类型

3.重置数组结构

rnd=np.array(np.random.rand(24))
print(rnd)
print(rnd.shape)
rnd.shape=6,4
print(rnd)

上面用到了对数组的shapes重新赋值的方法,就可以对数组的结构重构,重构时要注意结构要对应

4.使用函数创建数组

#使用函数创建数组
print(np.ones(shape=(2,3,6)))
print(np.zeros(shape=(2,3,6)))
print(np.full((2,3,6),5)) 
print(np.eye(6))
print(np.diag([5,6,47,5,6]))#arange函数 
ar=np.arange(60).reshape(6,10) 
print(ar)#linspace#等差数列,返回固定范围固定数量的数组
ln=np.linspace(1,20,100).reshape(5,20)
print(ln)#生成随机数
r1=np.random.random(20)#0-1之间随机数
print(rl)
c=np.random.randint(1,50,(8,12))

上述代码分别用到了几个函数
np.ones(shape)创建一个全是 1 的结构为shape的数组

np.zeros(shape)创建一个全是 0 的结构为shape的数组

np.full((2,3,6),5)创建一个结构为2,3,5数值全为5的数组

np.eye(6)创建一个6X6的单位矩阵

np.diag([5,6,47,5,6])创建一个对角矩阵

np.arange(60) 创建等差数组,默认为1,如np.arange(2,80,5)初始值为2终点为80,差为5
其他几个上面有注释,同时也与前面说的类似就不解释了

5.数组索引和数组展平和堆叠

 #二维数组索引
 r=np.random.randint(1,60,(4,6))
 print(r)
 print(r[1:2,3:5])#行列操作
 print(r[::2,::3])
 #变换数组形态
 print(r.flatten())#横向展平    #reshape ,重塑数组维度
 r2=np.random.randint(1,30,(4,6))
 r3=np.hstack((r,r2))#横向堆叠
 
 print(r3)r4=np.vstack((r,r2))#纵向堆叠
 print(r4) 

上述代码分别对应数组的展平,横向堆叠,纵向堆叠
数组的索引则为(r[1:2,3:5]
1:2针对行,3:5针对列,作用形式和常用的range参数作用形式差不多

重点部分统计分析方法,数值统计

6.排序

排序arr2=np.array([0,5,3,4,6,3,4,85,3,5,3,4,5])
arr2.sort()#无返回值 
print(arr2)
arr3=np.array([[45,36,45,32,55,21,54,56],[12,45,3,53,5,863,32,52]])
arr3.sort()
print(arr3) 
arr3.sort(axis=0)
print(arr3) 
print(arr2.argsort())

通过sort对数组排序无返回值,直接在原数组上修改,所以要注意保护数据

可以通过reverse=True/False传递参数决定是正序排序还是反序排序,True代表正序,False反序,也可能我记错了,你试试就行,哈哈

arr2.argsort()则是放回排序的下标,也可以指定排序的方式

7.去重和重复

#去重
print(np.unique(arr2)) #重复 
print(np.tile(arr2,2)) 
print(np.tile(arr3,2)) 
#对元素进行重复
print(arr2.repeat(2,axis=0))
print(arr3.repeat(2,axis=0))

np.unique可以对数组去重
np.title可以对整个对象进行重复
ndarray对象则可以通过repeat对元素进行重复,axis=0代表列重复,axis=1代表行重复

重点
8.统计函数

 #sum函数
 arr_z=np.random.randint(0,8,(6,10))
 print(arr_z)
 print(arr_z.sum())
 print(arr_z.sum(axis=0))#纵向
 print(arr_z.sum(axis=1))
  #mean均值函数 
 print(arr_z.mean())#将近多少? 
 print(arr_z.mean(axis=0))#纵向
 print(arr_z.mean(axis=1)) 
 #标准差 
 print(arr_z.std())#将近多少? 
 print(arr_z.std(axis=0))#纵向 
 print(arr_z.std(axis=1)) 
 #方差 
 print(arr_z.var())#将近多少? 
 print(arr_z.var(axis=0))#纵向 
 print(arr_z.var(axis=1)) 
 #协方差 
 print(arr_z.corrcoef())#将近多少? 
 print(np.corrcoef(arr_z))#纵向 
 print(np.corrcoef(arr_z,axis=0))  
 print(np.cov(arr_z))#行为基准  
 #最大值 
 print(arr_z.max())#将近多少? 
 print(arr_z.max(axis=0))#纵向 
 print(arr_z.max(axis=1))
 #最小值 
 print(arr_z.min())#将近多少? 
 print(arr_z.min(axis=0))#纵向 
 print(arr_z.min(axis=1))
 #最大值索引 
 print(arr_z.argmin())#将近多少? 
 print(arr_z.argmin(axis=0))#纵向 
 print(arr_z.argmin(axis=1))#
 print(arr_z[:,arr_z.argmin(axis=1)]) 
 #累计积 
 print(arr_z.cumprod())#将近多少? 
 print(arr_z.cumprod(axis=0))#纵向 
 print(arr_z.cumprod(axis=1))
 #累积和   
 print(arr_z.cumsum())#将近多少? 
 print(arr_z.cumsum(axis=0))#纵向 
 print(arr_z.cumsum(axis=1))    

上面用到了很多函数,事实上方法都差不读,当你不对axis传递参数时,函数的作用域时整个数组不论是一维数组还是二维三维数组,
当传递参数为0时,对于二维数组,以列为基础进行操作,为1时,以行为基础操作

9.person系数

np.corrcoef(arr_z)

使用np.corrcoef(a)可计算行与行之间的相关系数,np.corrcoef(a,rowvar=0)用于计算各列之间的相关系数,输出为相关系数矩阵。

10.一个简单绘图,构建自己的随机数据

 r1=np.random.random(20)#0-1之间随机数
 print(r1)
 r1=np.sort(r1)
 y1=r1*2+3
 y2=r1*2+3+np.random.uniform(-1,1,20)  plt.figure(figsize=(8,5))
 plt.plot(r1,y1,c='b')
 plt.scatter(r1,y2,c='r',s=5)
 plt.show()

结构如果所示
在这里插入图片描述
通过np.random,我们呢构建随机数

猜你喜欢

转载自blog.csdn.net/weixin_43327597/article/details/106315658