从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

注意:需要能够推导余弦定理和球面公式,或者有思路

 

posted @   绍荣  阅读(155)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示