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)的结果如下:
可以看见,给函数meshgrid传入一维数组可生成如上的二维数组
print(z)的结果如下:
z为sqrt(x^2+y^2)的结果
图片显示:
【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)
输出如下:
其他应用:
at=np.random.randn(5,5)
先生成一个随机数矩阵和上面的方法一样,如果希望将所有>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)
输出如下:
【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)
输出如下:
#常见的集合运算
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)#计算集合对称差(存在于一个但不同时存在于两个中)