从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

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

原文地址:https://www.cnblogs.com/gwzz/p/13597395.html