当前位置:网站首页>numpy.meshgrid()理解
numpy.meshgrid()理解
2022-08-10 13:43:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
一句话解释numpy.meshgrid()——生成网格点坐标矩阵。 关键词:网格点,坐标矩阵
网格点是什么?坐标矩阵又是什么鬼? 看个图就明白了: 图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵,就是坐标矩阵。 再看个简单例子
A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢? 答案如下: X = [ 0 1 2 0 1 2 ] X= \left[ \begin{matrix} 0 & 1 & 2 \\ 0 & 1 & 2 \end{matrix} \right] X=[001122] Y = [ 1 1 1 0 0 0 ] Y= \left[ \begin{matrix} 1 & 1 & 1 \\ 0 & 0 & 0 \end{matrix} \right] Y=[101010] 这就是坐标矩阵——横坐标矩阵 X X X中的每个元素,与纵坐标矩阵 Y Y Y中对应位置元素,共同构成一个点的完整坐标。如B点坐标 ( X 12 , Y 12 ) = ( 1 , 1 ) (X_{12},Y_{12})=(1,1) (X12,Y12)=(1,1)。
下面可以自己用matplotlib来试一试,输出就是上边的图
import numpy as np
import matplotlib.pyplot as plt
x = np.array([[0, 1, 2], [0, 1, 2]])
y = np.array([[0, 0, 0], [1, 1, 1]])
plt.plot(x, y,
color='red', # 全部点设置为红色
marker='.', # 点的形状为圆点
linestyle='') # 线型为空,也即点与点之间不用线连接
plt.grid(True)
plt.show()
如果对matplotlib不熟悉,可能只知道用一列横坐标(线性代数中的1维列向量),一列纵坐标生成(两者元素个数相等)一些点。但是实际上,给matplotlib的坐标信息是矩阵也是可以的,只要横纵坐标的尺寸一样。都会按照对应关系生成点。 但是有需要注意的地方,按照矩阵给坐标点信息,matplotlib会把横坐标矩阵中,每一列对应的点当做同一条线。 举个例子,把上面的代码
plot
的linestyle=''
删掉,或者变成linestyle='-'
(这个操作把图的线型改为默认状态),就会发现A-D是连接的,B-E是连接的,C-F是连接的,也即,会认为你输入的是3条线,如图
作为练习,自己试着生成如下结果 提示:线型等关键字参数设置可用如下代码
plt.plot(x, y,
marker='.', # 点的形状为圆点
markersize=10, # 点设置大一点,看着清楚
linestyle='-.') # 线型为点划线
答案
import numpy as np
import matplotlib.pyplot as plt
x = np.array([[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]])
y = np.array([[0, 0, 0, 0],
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3]])
plt.plot(x, y,
marker='.', # 点的形状为圆点
markersize=10, # 点设置大一点,看着清楚
linestyle='-.') # 线型为点划线
plt.grid(True)
plt.show()
到这里,网格点和坐标矩阵的概念就解释清楚了。 那么问题来了,如果需要的图比较大,需要大量的网格点该怎么办呢?比如下面的这种
最直接但是最笨的方法,就是按照上面的方法把横纵坐标矩阵 X X X, Y Y Y写出来,就像上面练习题中的
很明显,对于网格点很多的情况根本没法用。有啥好的办法吗? 有的,注意到我们练习题中的坐标矩阵,其实有大量的重复—— X X X的每一行都一样, Y Y Y的每一列都一样。基于这种强烈的规律性,numpy提供的numpy.meshgrid()函数可以让我们快速生成坐标矩阵 X X X, Y Y Y。
语法:X,Y = numpy.meshgrid(x, y) 输入的x,y,就是网格点的横纵坐标列向量(非矩阵) 输出的X,Y,就是坐标矩阵。
我们来试验一下:改写第一个例子中的代码,用numpy.meshgrid来实现。
import numpy as np
import matplotlib.pyplot as plt
x = np.array([0, 1, 2])
y = np.array([0, 1])
X, Y = np.meshgrid(x, y)
print(X)
print(Y)
plt.plot(X, Y,
color='red', # 全部点设置为红色
marker='.', # 点的形状为圆点
linestyle='') # 线型为空,也即点与点之间不用线连接
plt.grid(True)
plt.show()
# 从输出的结果来看,两种方法生成的坐标矩阵一毛一样。
[[0 1 2]
[0 1 2]]
[[0 0 0]
[1 1 1]]
最后给出上面这个图的代码
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1000,20)
y = np.linspace(0,500,20)
X,Y = np.meshgrid(x, y)
plt.plot(X, Y,
color='limegreen', # 设置颜色为limegreen
marker='.', # 设置点类型为圆点
linestyle='') # 设置线型为空,也即没有线连接点
plt.grid(True)
plt.show()
参考文献 https://www.cnblogs.com/black-mamba/p/9186965.html
留下您的评论,我可以做得更好! S e l f – D i s c i p l i n e a n d S o c i a l C o m m i t m e n t Self\text{-}Discipline \ \ and \ \ Social \ \ Commitment Self–Discipline and Social Commitment
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130022.html原文链接:https://javaforall.cn
边栏推荐
- Short read or OOM loading DB. Unrecoverable error, aborting now
- 3DS MAX batch export file script MAXScript with interface
- 递归递推之Fighting_小银考呀考不过四级
- 用低代码驱动IT现代化
- 2022-08-09: What does the following go code output?A: No, it will panic; B: Yes, it can run correctly; C: Not sure, see the voting result.package main import (“fmt“ “syn
- 作业8.9 构建TCP协议的服务器
- 学习日记8
- Fragment-hide和show
- 递归递推之计算组合数
- 一种能让大型数据聚类快2000倍的方法,真不戳
猜你喜欢
Lack of comparators, op amps come to the rescue!(Op amp is recorded as a comparator circuit)
【学习笔记】Redis的持久化
M²BEV: Multi-Camera Joint 3D Detection and Segmentation with Unified Bird’s-Eye View Representation
使用决策树对鸢尾花进行分类
Error: Rule can only have one resource source (provided resource and test + include + exclude)
Ethernet channel Ethernet channel
八大排序总是忘?快来这里~
2022-08-09:以下go语言代码输出什么?A:否,会 panic;B:是,能正确运行;C:不清楚,看投票结果。 package main import ( “fmt“ “syn
神了!阿里数据库专家纯手写了这份604页的Oracle+MySQL攻坚指南
发送post请求前台无法获取数据
随机推荐
递归递推之递归的函数
data product manager
CodeForces - 811A
Open Office XML 格式里如何描述多段具有不同字体设置的段落
高数_证明_曲率公式
C# 当前上下文中不存在InitializeComponent()
PHP 判断文件是否有内容,没有内容则复制另一个文件写入
2022年五大云虚拟化趋势
商汤自研机械臂,首款产品是AI下棋机器人:还请郭晶晶作代言
How to describe multiple paragraphs with different font settings in Open Office XML format
Ethernet channel Ethernet channel
Loudi Center for Disease Control and Prevention Laboratory Design Concept Description
Short read or OOM loading DB. Unrecoverable error, aborting now
Fragment-hide and show
[JS Advanced] Creating sub-objects and replacing this_10 in ES5 standard specification
Calculate the number of combinations recursively
NAACL 2022 | 简单且高效!随机中间层映射指导的知识蒸馏方法
ICML 2022 | 基于随机注意力机制的可解释可泛化图学习
Redis上云迁移实践
malloc 函数详解