欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DA-006【总第10期】Python数据分析:利用数组进行数据处理

程序员文章站 2022-05-25 17:05:26
...

本章介绍用NumPy数组将数据处理任务转变为简单表达式的方法:

import numpy as np

【1】网格型计算与图形化

#[1]网格型计算与图形化
points=np.arange(-5,5,0.01)#1000个间隔相同的点
x,y=np.meshgrid(points,points)#该函数接受两个一维数组,并产生两个二维矩阵(对应(x,y)点对)
import matplotlib.pyplot as plt
z=np.sqrt(x**2+y**2)
plt.imshow(z,cmap=plt.cm.gray)
plt.colorbar()#函数值二维数组的图形化结果

print(x)的结果如下:

DA-006【总第10期】Python数据分析:利用数组进行数据处理

可以看见,给函数meshgrid传入一维数组可生成如上的二维数组

print(z)的结果如下:

DA-006【总第10期】Python数据分析:利用数组进行数据处理

z为sqrt(x^2+y^2)的结果

图片显示:

DA-006【总第10期】Python数据分析:利用数组进行数据处理

【2】条件逻辑转化为数组运算:

arrx=np.array([-1,-2,-3,-4,-5])
arry=np.array([1,2,3,4,5])
cond=np.array([True,False,True,True,False])
#通过np.where(三元表达式x if condition else y的矢量化版本),让True时选x的值,False时选y的值
result=np.where(cond,arrx,arry)
print(result)

输出如下:

[-1  2 -3 -4  5]
其他应用:
at=np.random.randn(5,5)
先生成一个随机数矩阵

DA-006【总第10期】Python数据分析:利用数组进行数据处理

和上面的方法一样,如果希望将所有>0的数据换为1,<0的数据换为-1:

at1=np.where(at>0,1,-1)#将大于零设置为1,小于零设置为-1
at2=np.where(at>0,1,at)#只将大于零设置为1
print(at1)
print(at2)

输出如下:

DA-006【总第10期】Python数据分析:利用数组进行数据处理


【3】统计运算

s0=(at>0).sum()#计算大于零的个数
s1=(at>0).cumsum()#大于零元素的累计和
s2=(at>0).cumprod()#大于零元素的累计积
Max=at.max()#最大值
Min=at.min()#最小值
mean=at.mean()#计算算术平均数
s3=at.std()#计算标准差
s4=at.var()#计算方差
s5=at.sort()#排序

感兴趣的可以自己尝试

【4】寻找唯一(统计种类)

U=np.array(['A','B','A','D','C','B','C','A','E','F'])
U_only=np.unique(U)利用unique函数
print(U_only)
V=np.array([2,3,5,2,5,6,3,5,2,4,2,5])
V_only=np.unique(V)
print(V_only)

输出如下:

DA-006【总第10期】Python数据分析:利用数组进行数据处理

#常见的集合运算
U1=np.unique(V)#计算V中唯一的元素并返回有序结果
U2=np.intersct1d(U,V)#计算公共元素并返回有序结果
U3=np.union1d(U,V)#计算集合的并
U4=np.setdiff1d(U,V)#计算集合的差
U5=np.setxor1d(U,V)#计算集合对称差(存在于一个但不同时存在于两个中)



相关标签: DA