python学习第十二天

本文介绍了Python的包管理工具pip,包括安装、更新、卸载和查询库的命令。接着详细讲解了科学计算库numpy的使用,如创建、操作数组,以及数值计算和统计分析功能。最后,简述了数据可视化库matplotlib的基础应用,如绘制各种图表。
摘要由CSDN通过智能技术生成
#pip工具的主要功能
#常用pip命令
#pip install ku             安装第三方库
#pip install-U ku           更新已安装的第三方库
#pip download ku            下载但不安装
#pip uninstall ku           卸载已安装的第三方库
#pip show ku                显示第三方库详细信息
#pip search 关键字           查询关键字
#pip list                   列出已安装的第三方库

#.whl是python第三方库的一种打包格式

#数值计算库numpy
#数组类numpy.array
#numpy库常用创建数组函数
'''
import numpy as n
n.array(objcet,type)    type是数据类型
n.arange(x,y,d)         起始x,结束y-1,步长为d等差数组
n.linspace(x,y,n)       起始x,结束y,等分成n个等差数组
n.zeros((m,n))          m行n列全0数组
n.oncs((m,n))           m行n列全1数组
n.cmpty((m,n))          m行n列随机数组
n.random.rand(m,n)      m行n列0~1随机数组
n.eye(m,n)              m行n列对角线元素为1,其余为0的数组
'''
import numpy as p
x0=p.array((0,1,2,3,4,5,6))
x1=p.array([0,1,2,3,4,5,6],dtype=p.float32)
x2=p.arange(0,10,2)
x3=p.linspace(0,10,11)
x4=p.zeros((3,4))
x5=p.ones((2,3))
x6=p.empty((3,2))
x7=p.random.rand(4,5)
x8=p.eye(3)
print("x0=",x0)
print("x1=",x1)
print("x2=",x2)
print("x3=",x3)
print("x4=",x4)
print("x5=",x5)
print("x6=",x6)
print("x7=",x7)
print("x8=",x8)

#使用numpy库创建的数组具有的常见属性见表
'''
ndarray.dtype           #元素类型
ndarray.ndim            #轴个数或维度(秩)
ndarray.shape           #维度
ndarray.size            #总个数
ndarray.real            #实部
ndarray.imag            #虚部
ndarray.itemsize        #每个元素的大小
'''

import numpy as np
x1=np.linspace(0,10,11)         #一维
print("x1=",x1)
print("x1.dtype=",x1.dtype)
print("x1.ndim=",x1.ndim)
print("x1.shape",x1.shape)
print("x1.size",x1.size)
x2=np.array([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]])
print("x2=",x2)                 #二维
print("x2.dtype=",x2.dtype)
print("x2.ndim=",x2.ndim)
print("x2.shape",x2.shape)
print("x2.size",x2.size)

#改变数组形状的方法
'''
ndarray.reshape(m,n)        #返回m行n列的数组,但不改变原数组
ndarray.resize(m,n)         #返回m行n列的数组,且直接修改原数组
ndarray.flatten()           #返回一个一维数组的拷贝
ndarray.ravel()             #返回一个一维数组的视图
ndarray.transpose()         #交换数组的维度
ndarray.T                   #返回一个转置数组
'''

import numpy as np
x = np.linspace(1, 12, 12)
y = np.array([[11, 12, 13], [21, 22, 23], [31, 32, 33]])

x1 = x.reshape(3, 4)
x2 = x.reshape(2, -1)
x3 = x.reshape(2, 3, 2)

y1 = y.flatten()
y2 = y.ravel()
y3 = y.transpose()
y4 = y.T

print("x=", x)
print("y=", y)
print("x1=", x1)
print("x2=", x2)
print("x3=", x3)

print("y1=", y1)
print("y2=", y2)
print("y3=", y3)
print("y4=", y4)

#数组的索引和切片
'''
x[i]            #第i+1个元素
x[-i]           #反向第i个元素
x[i:j]          #第i+1个到第j个元素
x[i:]           #第i+1个到最后一个元素
x[-j:-i]        #反向第j个到第i+1个元素
x[i:j:d]        #步长为d
'''
import numpy as np
x=np.arange(1,11)
y=np.linspace(1,12,12).reshape(3,4)

x1=x[0]
x2=x[-1]
x3=x[2:6]
x4=x[2:]
x5=x[-10:-8]
x6=x[0:11:2]

y1=y[1:3]
y2=y[1:3,2:4]
y3=y[2:3:]
y4=y[:,2:4]
y5=y[-3:-1,-4:-1]

print("x=",x)
print("x[0]=",x1)
print("x[-1]",x2)
print("x[2:6]=",x3)
print("x[2:]",x4)
print("x[-10:-8]=",x5)
print("x[0,11,2]=",x6)

print("y=",y)
print("y[1:3]",y1)
print("y[1:3,2:4]=",y2)
print("y[2:3,:]",y3)
print("y[:,2:4]",y4)
print("y[-3:-1,-4:-1]=",y5)

#数组算数运算
'''
np.add()            加
np.subtract()       减
np.multiply()       乘
np.divide()         除
'''
import numpy as np
x=np.arange(1,5)
y=np.linspace(7,10,4)
z=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print("x=",x)
print("y=",y)
print("z=",z)

print("x+y=",np.add(x,y))
print("x-y=",np.subtract(x,y))
print("x*y=",np.multiply(x,y))
print("x/y=",np.divide(x,y))

print("x+z=",np.add(x,z))
print("x-z=",np.subtract(x,z))
print("x*z=",np.multiply(x,z))
print("x/z=",np.divide(x,z))


#数组函数运算
"""
np.sin(x)
np.cos(x)
np.tan(x)
np.sqrt(x)      #平方根
np.round(x)     #四舍五入
np.floor(x)     #向下取整
np.ceil(x)      #向上取整
np.exp(x)       #指数
np.log(x)       #对数值
"""
import  numpy as np
x=np.arange(0,100,10)
y=np.random.rand(10)
print("x=",x)
print("y=",y)

print("x_sin=",np.sin(x))
print("x_cos=",np.cos(x))
print("x_tan=",np.tan(x))
print("y_sqrt-",np.sqrt(y))
print("y_round",np.round(y))
print("y_floor",np.floor(y))
print("y_ceil",np.ceil(y))
print("y_exp",np.exp(y))
print("y_log",np.log(y))

#数组关系运算函数
'''
np.equal(x,y)           #数组x是否等于数组y
np.not_equal(x,y)       #x是否不等于y
np.less(x,y)            #x是否小于y
np.less_equal(x,y)      #x是否小于等于y
np.greater(x,y)         #x是否大于y
np.greater_equal(x,y)   #x是否大于等于y
'''
import numpy as np
x=np.random.randint(0,10,size=(3,3))
y=np.random.randint(0,10,size=(3,3))
print("x=",x)
print("y=",y)
print("x==y",np.equal(x,y))
print("x!=y",np.not_equal(x,y))
print("x<y",np.less(x,y))
print("x<=y",np.less_equal(x,y))
print("x>y",np.greater(x,0.5))
print("x>=y",np.greater_equal(x,y))

#统计分析
'''
np.amin(x,[axis=0或1])       #返回最小值(0纵,1横)
np.amax(x,[axis=0或1])       #返回最大值
np.ptp(x,[axis=0或1])        #返回指定轴中值的范围(最大值-最小值)
np.mediam(x,[asix=0或1])     #返回指定轴中轴的值
np.sum(x,[asix=0或1])        #返回指定轴元素之和
np.mcan(x,[asix=0或1])       #返回指定轴元素平均值
np.var(x,[asix=0或1])        #返回指定轴元素方差
np.std(x,[asix=0或1])        #返回指定轴元素标准差
'''
import numpy as np
x=np.linspace(1,10,10).reshape(2,5)
print("x=",x)

print("x__amin__0=",np.amin(x,axis=0))
print("x__amin__1=",np.amin(x,axis=1))
print("x__amin=",np.amin(x))

print("x__amax__0=",np.amax(x,axis=0))
print("x__amax__1=",np.amax(x,axis=1))
print("x__amax=",np.amax(x))

print("x__ptp__0=",np.ptp(x,axis=0))
print("x__ptp__1=",np.ptp(x,axis=1))
print("x__ptp=",np.ptp(x))

print("x__median__0=",np.median(x,axis=0))
print("x__median__1=",np.median(x,axis=1))
print("x__median=",np.median(x))

print("x__sum__0=",np.sum(x,axis=0))
print("x__sum__1=",np.sum(x,axis=1))
print("x__sum=",np.sum(x))

print("x__mean__0=",np.mean(x,axis=0))
print("x__mean__1=",np.mean(x,axis=1))
print("x__mean=",np.mean(x))

print("x__var__0=",np.var(x,axis=0))
print("x__var__1=",np.var(x,axis=1))
print("x__var=",np.var(x))

print("x__std__0=",np.std(x,axis=0))
print("x__std__1=",np.std(x,axis=1))
print("x__std=",np.std(x))


#线性代数运算
'''
np.dot(x,y)                 返回两个数组的点积
np.vdot(x,y)                返回两个向量的点积
np.inner(x,y)               返回两个数组的内积
np.matmul(x,y)              返回两个数组的矩阵积
np.linalg(x,y)              计算数组的行列积
np.linalg.solve(x,y)        求解线性方程组
np.linalg.inv(x,y)          计算矩阵的乘法逆矩阵
'''
import numpy as np
x=np.arange(1,13).reshape(3,4)
y=np.arange(13,25).reshape(4,3)
z=np.array([[1,1,1],[0,2,5],[2,5,-1]])
b=np.array([6,-4,27])

print("x=",x)
print("y=",y)

print("x__dot__y",np.dot(x,y))
print("x__vdot__y",np.vdot(x,y))
print("x__matmul__y",np.matmul(x,y))
print("x__inner__y",np.inner(x,x))

print("z__det",np.linalg.det(z))
print("z__solove__b",np.linalg.solve(z,b))
print("z__inv",np.linalg.inv(z))
#数据可视化库matpolotlib
#字库pyplot
'''
import matplotlib.pyplot as plt
plt.plot(x,y,linewhidth,linestyle,color)        #绘制直曲线图
plt.scatter(x,y,s,c)                            #绘制散点图
plt.hist(x,num_bline)                           #绘制直方图
plt.pie(x,labels,explode)                       #绘制饼图
plt.polar(theta,radii)                          #绘制极坐标图
plt._surface(x,y,z)                             #绘制3D图
plt.boxplot(data,notch,position)                #绘制一个箱型图
plt.bar(left,height,width)                      #绘制条形图
plt.step(x,y,where)                             #绘制步阶图
'''

#绘制三角函数
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*np.pi,256)
y1=np.sin(x)
y2=np.cos(x)
plt.plot(x,y1,7,7,7,7,7,7)  #线条宽度,样式,颜色,标记风格,颜色,大小
plt.plot(x,y2,6,6,6)
plt.show()

#标签和图例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='simHei'         #显示中文字体,使用黑体
matplotlib.rcParams['font.sans-serif']=['simHei']
plt.rcParams['axes.unicode_minus']=False            #显示负号

x=np.linspace(0,2*np.pi,100)
y1=np.sin(x)
y2=np.cos(x)
plt.plot(x,y1,label='sin')
plt.plot(x,y2,label='cos')
plt.title("sinx和cosx函数")    #添加标题
plt.xlabel("时间")            #x轴标签
plt.ylabel("数值")            #y轴标签
plt.xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],[r'$0$',r'$pi/2$',r'$\pi$',r'$3\pi/2$',r'$2/pi$'])       #刻度标签和值
plt.yticks([-1,-0.5,0,0.5,1,1.5],[r'$-1$',r'$-0.5$',r'$0$',r'$0.5$',r'$1$',r'$1.5$'])                   #刻度标签和值
plt.legend(loc="upper right")                   #添加图例,设置位置
plt.show()

#绘制散点图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='simHei'         #显示中文字体,使用黑体
matplotlib.rcParams['font.sans-serif']=['simHei']

N=50        #散点个数
x=np.random.rand(N)
y1=np.random.rand(N)    #弱相关
y2=x                    #强相关
#弱相关图
ax1=plt.subplot(121)                                            #区域
area=np.pi*(5*np.random.rand(N))**2                             #设置点大小(默认20)
color=np.random.rand(N)                                         #设置点颜色
plt.scatter(x,y1,s=area,c=color,alpha=0.5,cmap=plt.cm.hsv)      #cmap设置颜色转换
plt.title('弱相关性')           #透明度(0~1)#颜色图谱映射
plt.colorbar()
#强相关图
ax2=plt.subplot(122,sharey=ax1,sharex=ax1)
area=np.pi*(5*np.random.rand(N))**2
color=np.random.rand(N)
plt.scatter(x,y2,s=area,c=color,alpha=0.5,cmap=plt.cm.hsv)
plt.title('强相关性')
plt.colorbar()
plt.show()

#绘制直方图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams["font.family"]="simHei"
matplotlib.rcParams["font.sans-serif"]=["simHei"]
mu=100             #期望
sigma=15           #标准差
x = mu+sigma * np.random.randn(10000)   #样本
num_bins=50        #矩形个数
n,bins,patches=plt.hist(x,num_bins,density=1,facecolor='g',alpha=0.75)
#绘制直方图
y =((1/( np.sqrt(2*np.pi)*sigma))*np.exp(-0.5*(1/sigma*(bins-mu))**2))
plt.plot (bins,y,'r--')
plt.xlabel("期望")
plt.ylabel("概率")
plt.title("正态分布直方图:$vmu=100$,$\sigma=15$")
plt.show()

#绘制饼图
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams["font.family"]="simHei"
matplotlib.rcParams["font.sans-serif"]=["simHei"]
values =[0.17253,0.16086,0.10308,0.06196,0.04801,0.04743,0.40613]
#每个标签所对应数值
labels=[" Java ", " C ", " Python ", " C++", " C# ", ".NET ", "其他"]    #标签
explode=[0, 0, 0.1, 0, 0, 0, 0]         #扇区离圆心距离
plt.axes(aspect='equal')                #横、纵坐标标准化处理,保证是圆
plt.xlim(0.8)                          #设置 x 轴、 y 轴范围
plt.ylim(0.8)
#绘制饼图
plt.pie(x=values, labels=labels, explode=explode, autopct="%.3f%", pctdistance=0.8, labeldistance=1.15, startangle=90, counterclock=False)
#各类数据,各类数据代表标签,半径,百分比格式,百分比标签与圆心距离,扇区标签与圆心距离,饼图起始绘制角度,饼图绘制方向(默认逆时针)
plt.xticks(())                       #删除 x 轴和 y 轴刻度
plt.yticks(())
plt.title("2019年12月编程语言指数排行榜")
plt.legend(title="程序语言", loc="center right ", bbox_to_anchor=(1.3, 0.5))
#设置标签的标题和位置
plt.show()


#绘制极坐标图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams["font.family"]="simHei"
matplotlib.rcParams["font.sans-serif"]=["simHei"]
N=20
theta=np.linspace(0,2*np.pi,N,endpoint=False)       #设置极角
radii=10*np.random.rand(N)                          #设置极径
width=np.pi/4*np.random.rand( N )                   #设置条形宽度
color=plt.cm.viridis( np.random.rand(N))            #设置颜色
#绘制极坐标条形图
axl=plt.subplot (121, projection =' polar ')
ax1.bar(theta, radii, width=width, bottom=0.0, color=color)
plt.title("极坐标条形图")
#绘制极坐标散点图
ax2=plt.subplot(122, projection='polar')
area=np.pi*radii**2
color=np.random.rand(N)
ax2.scatter (theta, radii, c=color, s=area )
plt.title("极坐标散点图")
plt.show()


#绘制三维图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from mpl_toolkits.mplot3d import  Axes3D        #导入mpllot3D扩展包
fig=plt.figure()
ax=plt.axes(projection="3d")                    #创建3d对象函数
xdata=np.arange(-5,5,0.5)
ydata=np.arange(-5,5,0.5)
x,y=np.meshgrid(xdata,ydata)
z=np.sin(x)+np.cos(y)
ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap="rainbow")
ax.contour(x,y,z,offset=-2,cmap="rainbow")
plt.show()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值