这三个函数一般用于绘制网格坐标点,自己在学习的时候也遇到了疑惑,现在做一个笔记整理一下。

1、numpy中的mgrid

首先看一个例子

x,y = np.mgrid[-3:3:1,-3:3:1]

这里我要生成一个从-3到2的矩阵步长为1(结果为:-3,-2,-1,0,1,2),注意mgrid是左闭右开,那么生成的x和y都是什么样子的呢,生成的x按列展开,y按行展开,x和y的大小由mgrid[-3:3:1,-3:3:1]的步长决定,mgrid中括号中第一组-3到3每隔1取一个值,共6个,第二组-3到3每隔1取一个值,共6个,所以最后是6*6的矩阵,x按列展开,列的结构为[-3,-2,-1,0,1,2]T(T为转置),然后把x复制6列,我们看一下结果。

x,y = np.mgrid[-3:3:1,-3:3:1]
x
Out[37]:
array([[-3, -3, -3, -3, -3, -3],[-2, -2, -2, -2, -2, -2],[-1, -1, -1, -1, -1, -1],[ 0,  0,  0,  0,  0,  0],[ 1,  1,  1,  1,  1,  1],[ 2,  2,  2,  2,  2,  2]])

同理y按行展开行结构为[-3,-2,-1,0,1,2],复制6行

y
Out[38]:
array([[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2]])

现在我们再看一个例子

x,y = np.mgrid[-3:3:2,-3:3:1]

同理我们先看mgrid中括号里边的第一组-3:3:2,生成的数据为-3,-1,1,总长为3,第二组-3:3:1,生成的数据为-3,-2,-1,0,1,2,总长为6,那么最后的结果就是x和y是3*6的矩阵,x同样按照列展开,列结果为[-3,-1,1]T(T为转置),复制6列,x结果

x,y = np.mgrid[-3:3:2,-3:3:1]
x
Out[40]:
array([[-3, -3, -3, -3, -3, -3],[-1, -1, -1, -1, -1, -1],[ 1,  1,  1,  1,  1,  1]])

y按照行展开,每行为[-3,-2,-1,0,1,2],然后复制3行,y结果为

y
Out[41]:
array([[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2]])

2、ravel函数

ravel函数就是将一个矩阵拉直,我们以x,y = np.mgrid[-3:3:1,-3:3:1]生成的矩阵为例子。

x,y = np.mgrid[-3:3:1,-3:3:1]
x
Out[43]:
array([[-3, -3, -3, -3, -3, -3],[-2, -2, -2, -2, -2, -2],[-1, -1, -1, -1, -1, -1],[ 0,  0,  0,  0,  0,  0],[ 1,  1,  1,  1,  1,  1],[ 2,  2,  2,  2,  2,  2]])
x.ravel()
Out[44]:
array([-3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1,-1,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,2,  2])
y
Out[45]:
array([[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2],[-3, -2, -1,  0,  1,  2]])
y.ravel()
Out[46]:
array([-3, -2, -1,  0,  1,  2, -3, -2, -1,  0,  1,  2, -3, -2, -1,  0,  1,2, -3, -2, -1,  0,  1,  2, -3, -2, -1,  0,  1,  2, -3, -2, -1,  0,1,  2])

3、numpy.c_

这个函数就是用于将输入的矩阵按照列来连接,列如

np.c_[np.array([1,2,3]),np.array([4,5,6])]Out[50]:array([[1, 4],[2, 5],[3, 6]])

结合mgrid,ravel,c_就可以生成二维网格坐标点了

x,y=np.mgrid[-3:3:1,-3:3:1]
grid = np.c_[x.ravel(),y.ravel()]
grid
Out[53]:
array([[-3, -3],[-3, -2],[-3, -1],[-3,  0],[-3,  1],[-3,  2],[-2, -3],[-2, -2],[-2, -1],[-2,  0],[-2,  1],[-2,  2],[-1, -3],[-1, -2],[-1, -1],[-1,  0],[-1,  1],[-1,  2],[ 0, -3],[ 0, -2],[ 0, -1],[ 0,  0],[ 0,  1],[ 0,  2],[ 1, -3],[ 1, -2],[ 1, -1],[ 1,  0],[ 1,  1],[ 1,  2],[ 2, -3],[ 2, -2],[ 2, -1],[ 2,  0],[ 2,  1],[ 2,  2]])

numpy中的 numpy.c_ numpy.ravel numpy.mgrid的理解相关推荐

  1. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)

    python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组.使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank) 目录

  2. python grid函数_详解numpy中的meshgrid函数用法

    numpy中的meshgrid函数的使用 numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/num ...

  3. python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算

    标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...

  4. Python中Numpy中省略号的作用

    我们在Python中遇到如[0,-,0]是什么意思? Numpy 中可以用来选数据. >>> import numpy as np >>> a = [[1,2,3, ...

  5. python数据分析(四)——numpy中的nan和数据的填充

    系列文章: python数据分析(一)--numpy数组的创建 python数据分析(二)--numpy数组的计算 python数据分析(三)--numpy读取本地数据和索引 python数据分析(五 ...

  6. numpy中matmul的使用(个人笔记)

    numpy中matmul的使用 简介:        numpy.matmul 函数返回两个数组的矩阵乘积.当两个数组都是二维数组的时候,就是数学上的两个矩阵的乘积. 例如: import numpy ...

  7. Python: NumPy中的多维数组ndarray

    转载来源 http://blog.sciencenet.cn/home.php?mod=space&uid=3031432&do=blog&id=1064033 1 Pytho ...

  8. Numpy中的广播和数组运算

    https://www.toutiao.com/a6677441250955624973/ 一.概述 在Numpy中当数组进行运算时,如果两个数组的形状相同,那么两个数组相乘就是两个数组的对应位相乘, ...

  9. numpy中ravel函数、flatten函数的功能及差异

    numpy中ravel函数.flatten函数的功能及差异 >>> import numpy as np >>> a = np.arange(20).reshape ...

最新文章

  1. 缓存初解(四)---Ibatis的缓存配置+Ehcache
  2. Liunx 中tr的用法
  3. 修改JAVA代码,需要重启Tomcat的原因
  4. 国庆出游,这个银行卡大小的充电宝一定要带
  5. 关于计算机网络的主题报告,计算机网络与物联网工程研究所组织开展“安全先锋沙龙”主题报告活动...
  6. 生产者消费者伪码_[线程同步]生产者消费者代码实现
  7. 使用springMVC搭建后台,想实现拦截所有后缀的请求,怎么办
  8. CentOS 7中源码安装MySQL 5.7.16 ----已测试验证
  9. 有助于提高锁性能的几点建议
  10. python next permutation_C++ STL next_permutation的实现原理
  11. 现代信号处理——参数估计理论(最大似然估计)
  12. JavaScript 技术篇 - js读取Excel文档里的内容实例演示,js如何读取excel指定单元格的内容,js将excel的内容转化为json字符串方法
  13. 标明文献引用及文献列表自动生成(尾注交叉引用)
  14. linux下自动删除文件夹,如何在Linux中自动删除或清理/tmp文件夹内容?
  15. wifi mesh 开关
  16. 微信小程序 vant-weapp 实现多选标签
  17. Win10系统常见问题
  18. wordpress php 采集器,wordpress 采集插件怎么用
  19. uploadify Uncaught TypeError: $(...).uploadify is not a function
  20. 漫画图解 ElasticSearch 搜索原理

热门文章

  1. 长沙学院2022暑假训练赛(一)六级阅读
  2. SpringBoot+Netty构建高并发稳健的部标JT808网关
  3. 基于STM32单片机的出租车计价器
  4. Qt 数据可视化之3D图形
  5. linux重启shutdown命令,linux重启命令 reboot与shutdown -r now的区别与联系
  6. vue按钮字体大小设置_vue项目中应用自定义的字体
  7. ThingJS API 2.0全面进化更适合数字孪生应用
  8. 从零开始的机械臂yolov5抓取gazebo仿真(一)
  9. 《Unity初试面试评级标准初稿》请拍砖。。。
  10. 对于网络人民的几点建议,请拍砖