从kmeans中学到的编程技巧
1.random
在python3中,numpy中的一些随机方法
random.random_sample() # 产生0-1之间的随机数
random.rand(3,1) # 产生3行1列的随机数,随机数的大小是0-1
2.min和max
A = mat(array([[1,3], [5, 6]])) print(min(A[:, 1])) print(min(A[:, 1])[0, 0]) ------------------------------------- 结果: [[3]] 3
对矩阵进行min和max之后所得到的数据,还是矩阵。若是想获得矩阵内的数据,就要用取矩阵元素的方法
3.map
在python3.0中,使用map将生产map对象,需要使用list,才可以获得真实的元素值列表
4.tolist()
可将矩阵转化为list,使用函数tolist(),此时所得到的列表是二维的。即元素是一个列表。那么,A.tolist()[0],就是获取矩阵A的第一行元素,构成一维list
5.add_axes
在figure()上面添加新的区域,使用add_axes,代码所示:
# 测试add_axes import matplotlib import matplotlib.pyplot as plt flg = plt.figure() rect = [0.1, 0.1, 0.8, 0.8] # 0.1为x轴,0.1位y轴的起点,分别是figure的10%的宽和高,即x和y,而0.8和0.8分别为figure的80%的宽和高 X = [4,5,8,14,25,36] y = [2,4,6,7,9,13] ax = flg.add_axes(rect, projection='polar', label='ax0') # projection表示坐标系 ax.plot(X, y, 'r') ax.set_title('ax') ax1 = flg.add_axes([0.0, 0.0, 0.4, 0.4], frameon=False, label='ax1') # 这里的0.0、0.4都是针对整个figure而言的
# frameon表示是否覆盖下面的图层
ax1.plot(X, y, 'b') ax1.set_title('ax1') plt.show()
效果图为:
需要深入理解add_axes的含义,若是想在制作坐标时,去掉x轴和y轴的刻度,就可以在使用xticks=[]和yticks=[],在axes初始化传入,即可。代码如下:
axprops = dict(xticks=[], yticks=[]) # 表示不需要x和y的刻度,因为该刻度里面没有数据啊,所以就没有数据啦, # 不添加的就按数据的大小,自动生成刻度 ax0=fig.add_axes(rect, label='ax0', **axprops) # label为了标识不同的坐标系(axes)
在导入地图和对应的经纬度时,需要将坐标系的大小,设定为同一个大小,如:rect = [0.1, 0.1, 0.8, 0.8]。这样图片和位置才可以一一对应起来。
注意:不同的坐标系,需要有不同的label标签,因为figure里面存放的坐标系是通过label进行检索的
6.球面距离公式
利用余弦定理和球面上两点的最短距离,可以推导出球面公式。推导过程可参考:球面推导过程
余弦定理:
球面距离公式:S=R·arc cos[cosβ1cosβ2cos(α1-α2) + sinβ1sinβ2],其中:假设所求点A ,纬度角β1 ,经度角α1 ;点B ,纬度角β2 ,经度角α2
注意:需要能够推导余弦定理和球面公式,或者有思路
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?