• 从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

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

  • 相关阅读:
    Selenium库的使用
    Win10 常用快捷键
    503.下一个更大元素 II
    456.132模式
    201.数字范围按位与
    78.子集
    299.猜数字游戏
    49.字母异位词分组
    36.有效的数独
    290.单词规律
  • 原文地址:https://www.cnblogs.com/gwzz/p/13597395.html
Copyright © 2020-2023  润新知