numpy中的 numpy.c_ numpy.ravel numpy.mgrid的理解
这三个函数一般用于绘制网格坐标点,自己在学习的时候也遇到了疑惑,现在做一个笔记整理一下。
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的理解相关推荐
- 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) 目录
- python grid函数_详解numpy中的meshgrid函数用法
numpy中的meshgrid函数的使用 numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/num ...
- python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...
- Python中Numpy中省略号的作用
我们在Python中遇到如[0,-,0]是什么意思? Numpy 中可以用来选数据. >>> import numpy as np >>> a = [[1,2,3, ...
- python数据分析(四)——numpy中的nan和数据的填充
系列文章: python数据分析(一)--numpy数组的创建 python数据分析(二)--numpy数组的计算 python数据分析(三)--numpy读取本地数据和索引 python数据分析(五 ...
- numpy中matmul的使用(个人笔记)
numpy中matmul的使用 简介: numpy.matmul 函数返回两个数组的矩阵乘积.当两个数组都是二维数组的时候,就是数学上的两个矩阵的乘积. 例如: import numpy ...
- Python: NumPy中的多维数组ndarray
转载来源 http://blog.sciencenet.cn/home.php?mod=space&uid=3031432&do=blog&id=1064033 1 Pytho ...
- Numpy中的广播和数组运算
https://www.toutiao.com/a6677441250955624973/ 一.概述 在Numpy中当数组进行运算时,如果两个数组的形状相同,那么两个数组相乘就是两个数组的对应位相乘, ...
- numpy中ravel函数、flatten函数的功能及差异
numpy中ravel函数.flatten函数的功能及差异 >>> import numpy as np >>> a = np.arange(20).reshape ...
最新文章
- 缓存初解(四)---Ibatis的缓存配置+Ehcache
- Liunx 中tr的用法
- 修改JAVA代码,需要重启Tomcat的原因
- 国庆出游,这个银行卡大小的充电宝一定要带
- 关于计算机网络的主题报告,计算机网络与物联网工程研究所组织开展“安全先锋沙龙”主题报告活动...
- 生产者消费者伪码_[线程同步]生产者消费者代码实现
- 使用springMVC搭建后台,想实现拦截所有后缀的请求,怎么办
- CentOS 7中源码安装MySQL 5.7.16 ----已测试验证
- 有助于提高锁性能的几点建议
- python next permutation_C++ STL next_permutation的实现原理
- 现代信号处理——参数估计理论(最大似然估计)
- JavaScript 技术篇 - js读取Excel文档里的内容实例演示,js如何读取excel指定单元格的内容,js将excel的内容转化为json字符串方法
- 标明文献引用及文献列表自动生成(尾注交叉引用)
- linux下自动删除文件夹,如何在Linux中自动删除或清理/tmp文件夹内容?
- wifi mesh 开关
- 微信小程序 vant-weapp 实现多选标签
- Win10系统常见问题
- wordpress php 采集器,wordpress 采集插件怎么用
- uploadify Uncaught TypeError: $(...).uploadify is not a function
- 漫画图解 ElasticSearch 搜索原理