numpy meshgrid 和 mgrid 的两个简单实例和解析

numpy.meshgridnumpy.mgrid 用于返回包含坐标向量的坐标矩阵. 当坐标矩阵为二维时, 可用于在图像变形时构建网格.

实例一

from __future__ import print_function
import numpy as np

grid_y1, grid_x1 = np.meshgrid(range(5), range(3))
grid_x2, grid_y2 = np.mgrid[0:3, 0:5]

# Two arrays are element-wise equal within a tolerance.
print ("grid_x1 == grid_x2?", np.allclose(grid_x1, grid_x2))   # True.
print ("grid_y1 == grid_y2?", np.allclose(grid_y2, grid_y2))    # True. 

注意, 对于 np.meshgrid(range(5), range(3)),

* 返回两个数组 grid_y1和grid_x1,形状均为 3 x 5, 不是 5 x 3 ; 
* 返回的第一个数组元素来自 range(5),即 3 行,每行均为 [0, 1, 2, 3, 4] ;
* 返回的第二个数组元素来自 range(3), 即 5 列,每列均为[0,1,2]

实例二

from __future__ import print_function
import numpy as np

grid_y1, grid_x1 = np.meshgrid(np.linspace(0,1,200), np.linspace(0,1,100))  # output 100 x 200 array
grid_x2, grid_y2 = np.mgrid[0:1:100j, 0:1:200j]    # output 100 x 200 array
# Two arrays are element-wise equal within a tolerance.
print ("grid_x1 == grid_x2?", np.allclose(grid_x1, grid_x2))   # True.
print ("grid_y1 == grid_y2?", np.allclose(grid_y2, grid_y2))    # True. 

注:

grid_y1, grid_x1 均为 100 x 200 数组.

grid_y1 数组有 100 行, 每行均为 np.linspace(0,1,200), 与 grid_y2 相同 ;

grid_x1 数组有 200 列, 每列均为 np.linspace(0,1,100), 与 grid_x2 相同 ;

0:1:100j 索引表示包含两端即 0 和 1 , 均分为 100 个点 , 与 np.linspace(0,1,100) 含义相同.

原文地址:https://www.cnblogs.com/klchang/p/10633972.html

时间: 2024-11-09 05:53:14

numpy meshgrid 和 mgrid 的两个简单实例和解析的相关文章

Android Fragment 简单实例

Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有过分被拉长.控件间距过大等情况.这个时候更好的体验效果是在Activity中嵌入"小Activity",然后每个"小Activity"又可以拥有自己的布局.这就是Fragment碎片技术. 一.F

numpy.meshgrid()理解

一句话解释numpy.meshgrid()——生成网格点坐标矩阵. 关键词:网格点,坐标矩阵 网格点是什么?坐标矩阵又是什么鬼? 看个图就明白了: 图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵,就是坐标矩阵. 再看个简单例子 A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢? 答案如下:X=[ 原文地址:https://www.cnblogs.com/lvdongjie/p/11419258.html

Java 多线程编程两个简单的例子

/** * @author gao */ package gao.org; public class RunnableDemo implements Runnable{ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++){ System.out.println("新线程输出:"+i); } } public static void main(String []

java 程序执行输出有两种简单方式

java 程序执行输出有两种简单方式: 1. System.out.println("需要输出的内容"): 该方法可参看运行一个简单的Java程序 结果图: 2. System.out.print("需要输出的内容"): 1 public class HelloWorld 2 { 3 //Java程序的入口方法,程序将从这里开始运行 4 public static void main(String[] args) 5 { 6 //向控制台打印一条语句 7 Syste

两种简单实现菜单高亮显示的JS类(转载)

两种简单实现菜单高亮显示的JS类 近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web前端来说,是比较常用到的效果,正好此次又要用到,特地整理出我所写的两种高亮类. 其实思路很简单,第一种方法是通过遍历链接组的href值,通过indexOf判断href值是否被包含在浏览器当前url值中.此方法有一定局限,比如对于iframe内的菜单是不能这样判断的; 第二种方法适用范围更广一样,实现思路

从两个简单例子窥视协程的惊人性能

我们用普通同步方式扫描10个端口,用协程(异步)方式扫描1000个端口,对比时间. 1.同步方式代码 #encoding=utf-8 #author: walker #date: 2014-07-16 #function: 使用同步方式扫描10个端口 import time, socket, sys def task(addr): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(100) try:

(原创)Linux跟Window共享文件的两个简单方法

第一中种方法: Linux中启动shell,输入如下命令: mount -t cifs -o username="my-pc-name",password="my-password" //my-ip-addr/sharefolder /mnt/my-linux-sharefolder 回车,ok. 第二种方法: 1. linux的/etc/smb.conf备份,然后touch smb.conf一个新文件. 2. vi smb.conf如下: [global] wor

Java 多线程编程两个简单的样例

/** * @author gao */ package gao.org; public class RunnableDemo implements Runnable{ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++){ System.out.println("新线程输出:"+i); } } public static void main(String []

C#实现异步编程的两个简单机制

理解程序.进程.线程三者之间的区别:简而言之,一个程序至少有一个进程,一个进程至少有一个线程进程就是在内存中运行的程序(即运行着的程序):一个进程一般只有一个线程,一个进程可以包含多个线程(多线程编程): 使用异步编程的简单机制一:异步委托    委托类型的BeginInvoke和EndInvoke方法.        BeginInvoke方法:            参数组成:引用方法的参数列表+callback参数+state参数            返回值:IAsyncResult接口