zoukankan      html  css  js  c++  java
  • np.meshgrid() 生成网格坐标函数

    numpy.meshgrid():生成网格点坐标矩阵

    [X,Y] = meshgrid(x,y) 将向量x和y定义的区域转换成矩阵X和Y,其中矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y的简单复制(注:下面代码中X和Y均是数组,在文中统一称为矩阵了)

    假设x是长度为m的向量,y是长度为n的向量,则最终生成的矩阵X和Y的维度都是 nm (注意不是mn)。

    至于为什么(其中矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y的简单复制),看下面的图片

     我们注意到网格坐标矩阵,其实有大量的重复——XXX的每一行都一样,YYY的每一列都一样

    代码:

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    m, n = (5, 3)
    x = np.linspace(0, 1, m)  #array([0.  , 0.25, 0.5 , 0.75, 1.  ])
    y = np.linspace(0, 1, n)  #array([0. , 0.5, 1. ])
    X, Y = np.meshgrid(x,y)
    '''
    X:
       array([[0.  , 0.25, 0.5 , 0.75, 1.  ],
           [0.  , 0.25, 0.5 , 0.75, 1.  ],
           [0.  , 0.25, 0.5 , 0.75, 1.  ]]) 
        
    Y:
        array([[0. , 0. , 0. , 0. , 0. ],
           [0.5, 0.5, 0.5, 0.5, 0.5],
           [1. , 1. , 1. , 1. , 1. ]])
    '''
    
    X.shape  #(3, 5)
    Y.shape  #(3, 5)

    matplotlib中进行可视化,来查看函数运行后得到的网格化数据的结果

    plt.plot(X, Y, marker='.', color='blue', linestyle='none')
    plt.show()

    说了这么多,这个网格坐标主要应用于等高线的绘制和机器学习中超平面的绘制

    例子:

    x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
    y_label = np.array([0, 0, 0, 1, 1, 1])
    
    ## 调用逻辑回归模型
    lr_clf = LogisticRegression()
    
    ## 用逻辑回归模型拟合构造的数据集
    lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2
    
    # 可视化决策边界
    plt.figure()
    plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
    plt.title('Dataset')
    
    nx, ny = 200, 100
    x_min, x_max = plt.xlim()  #返回x轴的范围
    y_min, y_max = plt.ylim()  #返回y轴的范围
    x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))
    
    z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
    z_proba = z_proba[:, 1].reshape(x_grid.shape)
    plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')
    
    plt.show()

  • 相关阅读:
    axios
    vue打包之后生成一个配置文件修改请求接口
    微信小程序小结(2) ------ 自定义组件
    eros --- Windows Android真机调试
    weex前端式写法解决方案---eros
    微信小程序小结(1) ------ 前后端交互及wx.request的简易封装
    configparser模块--配置文件
    怎样尊重一个程序员
    poj1326(bfs)
    安装篇——压缩包安装MySql数据库
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13476149.html
Copyright © 2011-2022 走看看