numpy中的meshgrid函数「建议收藏」

numpy中的meshgrid函数「建议收藏」numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html meshgrid(*xi,**kwargs)功能:从一个坐标向量中返回一个坐标矩阵 参数:x1,x2…,xn:数组,一维的数组代表网格的坐标。indexing:{‘xy’,…

大家好,又见面了,我是你们的朋友全栈君。

numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html

 

meshgrid(*xi, **kwargs)

功能:从一个坐标向量中返回一个坐标矩阵

 

参数:

x1,x2…,xn:数组,一维的数组代表网格的坐标。

indexing:{‘xy’,’ij’},笛卡尔坐标’xy’或矩阵’ij’下标作为输出,默认的是笛卡尔坐标。

sparse:bool类型,如果为True,返回一个稀疏矩阵保存在内存中,默认是False。

copy:bool类型,如果是False,返回一个原始数组的视图保存在内存中,默认是True。如果,sparse和copy都为False,将有可能返回一个不连续的数组。而且,如果广播数组的元素超过一个,可以使用一个独立的内存。如果想要对这个数组进行写操作,请先拷贝这个数组。

返回值:x1,x2,….,xn:ndarray(numpy数组)

可能看完官方的文档之后还是一脸懵逼,下面通过几个例子来解释说明一下。

 

    nx,ny = (3,2)
    #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
    x = np.linspace(0,1,nx)
    #[ 0.   0.5  1. ]
    y = np.linspace(0,1,ny)
    # [0.  1.]
    xv,yv = np.meshgrid(x,y)
    '''
    xv
    [[ 0.   0.5  1. ]
     [ 0.   0.5  1. ]]
     yv
     [[ 0.  0.  0.]
      [ 1.  1.  1.]]
    '''

通过上面的例子,其实可以发现meshgrid函数将两个输入的数组x和y进行扩展,前一个的扩展与后一个有关,后一个的扩展与前一个有关,前一个是竖向扩展,后一个是横向扩展。因为,y的大小为2,所以x竖向扩展为原来的两倍,而x的大小为3,所以y横向扩展为原来的3倍。通过meshgrid函数之后,输入由原来的数组变成了一个矩阵。通过使用meshgrid函数,可以产生一个表格矩阵,下面用一个例子来展示产生一个2*2网格的坐标,每个网格的大小为1。

 

 

    nx,ny = (3,3)
    #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
    x = np.linspace(0,2,nx)
    # [0. 1. 2.]
    y = np.linspace(0,2,ny)
    # [0. 1. 2.]
    xv,yv = np.meshgrid(x,y)
    print(xv.ravel())
    #[ 0.  1.  2.  0.  1.  2.  0.  1.  2.]
    print(yv.ravel())
    #[ 0.  0.  0.  1.  1.  1.  2.  2.  2.]

ravel函数是将矩阵变为一个一维的数组,其中xv.ravel()就表示x轴的坐标,yv.ravel()就表示了y轴的坐标,我们将x轴的坐标和y轴的坐标进行一一对应,就产生了一个2*2大小为1的网格中的9个点的坐标。

 

如果,将sparse参数设置为True,就不会向上面一样进行扩展了,也就是说它产生的网格坐标不是所有的网格坐标,而是网格对角线上的坐标点。

 

    nx,ny = (3,3)
    #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
    x = np.linspace(0,2,nx)
    # [0. 1. 2.]
    y = np.linspace(0,2,ny)
    # [0. 1. 2.]
    xv,yv = np.meshgrid(x,y,sparse=True)
    print(xv)
    #[[ 0.  1.  2.]]
    print(yv)
    '''
    [[ 0.]
     [ 1.]
     [ 2.]]
    '''

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135784.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • rabbitmq集群搭建_mongodb集群搭建

    rabbitmq集群搭建_mongodb集群搭建docker单容器部署创建桥接网络,用于容器间通信$dockernetworkcreatemq-network首先启动3个rabbitmq容器$dockerrun–namerabbit01\ -eRABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=”-setcookieCOUBJLKLQCIAPKIQZGGJ”\ –hostnamerabbit01–networkmq-network\ -p5672:5672-p1567

    2022年9月11日
    3
  • C语言中函数的基本知识

    C语言中函数的基本知识接着上次的数组,这次我们来简单的讲讲C语言里面的函数。函数和指针这两大块,在C语言中占据着重要的位置,是C语言中的主体和核心,所以它们的重要性也就不言而喻了。那什么是函数呢?1:函数是C语言的模块,一块块的,有较强的独立性,可以相互调用,也就是说,你可以在函数A中调用函数B,又可在函数B中调用函数C,不仅如此,你还可以调用函数自身(递归)。2:函数是完成一个个特定任务的语句集合,它能完…

    2022年6月26日
    29
  • spring的事务隔离级别「建议收藏」

    spring的事务隔离级别「建议收藏」spring的事务隔离级别

    2022年4月22日
    48
  • HUNNU Contest 区间最值

    HUNNU Contest 区间最值

    2022年1月1日
    53
  • (十一)DSP28335基础教程——EQEP实验(直流电机转速检测)

    (十一)DSP28335基础教程——EQEP实验(直流电机转速检测)0前言这一节我们来学习DSP的EQEP模块的功能。实验目标:通过光电编码器,将采集直流减速电机的转速并显示在LCD1602上。由于28335控制LCD1602的例程并不多,在下面解释的过程会详细贴出代码,并给出一些注意事项。本节将分为硬件部分、软件部分和实验展示三个方面进行介绍,不清楚的欢迎留言。1硬件部分我们需要五个硬件:可调电源、DSP28335核心板、烧写器、自带光电编码器的直流减速电机和LCD1602。其中,电机的额定电压为12V,因此,我们通过可调电源来调整电压,则可以调整电机的转速

    2022年10月7日
    2
  • 详细完整MySQL8.0.23安装教程

    文章目录目录前言一、官网下载MySQL地址:https://dev.mysql.com/downloads/mysql/二、配置解压文件1.解压2.配置my.ini文件三、初始化四、安装启动mysql服务后续前言最近在做一个人脸识别的项目,需要用数据库保存学生信息与前段交互。MySQL的优点1、mysql性能卓越,服务稳定,很少出现异常宕机。2、mysql开放源代码且无版权制约,自主性及使用成本低。3、mysql历史悠久,社区及用户非.

    2022年4月11日
    209

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号