網(wǎng)站首頁 編程語言 正文
引言
近期在好幾個地方都看到meshgrid的使用,雖然之前也注意到meshgrid的用法。
但總覺得印象不深刻,不是太了解meshgrid的應(yīng)用場景。
所以,本文將進(jìn)一步介紹Numpy中meshgrid的用法。
Meshgrid函數(shù)的基本用法
在Numpy的官方文章里,meshgrid函數(shù)的英文描述也顯得文縐縐的,理解起來有些難度。
可以這么理解,meshgrid函數(shù)用兩個坐標(biāo)軸上的點(diǎn)在平面上畫網(wǎng)格。
用法:
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)與[X,Y]=meshgrid(x,x)是等同的
[X,Y,Z]=meshgrid(x,y,z)生成三維數(shù)組,可用來計算三變量的函數(shù)和繪制三維立體圖
這里,主要以[X,Y]=meshgrid(x,y)為例,來對該函數(shù)進(jìn)行介紹。
[X,Y] = meshgrid(x,y) 將向量x和y定義的區(qū)域轉(zhuǎn)換成矩陣X和Y,其中矩陣X的行向量是向量x的簡單復(fù)制,而矩陣Y的列向量是向量y的簡單復(fù)制(注:下面代碼中X和Y均是數(shù)組,在文中統(tǒng)一稱為矩陣了)。
假設(shè)x是長度為m的向量,y是長度為n的向量,則最終生成的矩陣X和Y的維度都是 n*m (注意不是m*n)。
文字描述可能不是太好理解,下面通過代碼演示下:
加載數(shù)據(jù)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
m, n = (5, 3)
x = np.linspace(0, 1, m)
y = np.linspace(0, 1, n)
X, Y = np.meshgrid(x,y)
查看向量x和向量y
x
out:
array([ 0. ?, ?0.25, ?0.5 , ?0.75, ?1. ?])
y
out:
array([ 0. , ?0.5, ?1. ])
查看矩陣X和矩陣Y
X
out:
array([[ 0. ?, ?0.25, ?0.5 , ?0.75, ?1. ?],
? ? ? ?[ 0. ?, ?0.25, ?0.5 , ?0.75, ?1. ?],
? ? ? ?[ 0. ?, ?0.25, ?0.5 , ?0.75, ?1. ?]])
Y
out:
array([[ 0. , ?0. , ?0. , ?0. , ?0. ],
? ? ? ?[ 0.5, ?0.5, ?0.5, ?0.5, ?0.5],
? ? ? ?[ 1. , ?1. , ?1. , ?1. , ?1. ]])
查看矩陣對應(yīng)的維度
X.shape
out:
(3, 5)
Y.shape
out:
(3, 5)
meshgrid函數(shù)的運(yùn)行過程,可以通過下面的示意圖來加深理解:
再者,也可以通過在matplotlib中進(jìn)行可視化,來查看函數(shù)運(yùn)行后得到的網(wǎng)格化數(shù)據(jù)的結(jié)果
plt.plot(X, Y, marker='.', color='blue', linestyle='none')
plt.show()
當(dāng)然,我們也可以獲得網(wǎng)格平面上坐標(biāo)點(diǎn)的數(shù)據(jù),如下:
z = [i for i in zip(X.flat,Y.flat)]
z
out:
[(0.0, 0.0),
?(0.25, 0.0),
?(0.5, 0.0),
?(0.75, 0.0),
?(1.0, 0.0),
?(0.0, 0.5),
?(0.25, 0.5),
?(0.5, 0.5),
?(0.75, 0.5),
?(1.0, 0.5),
?(0.0, 1.0),
?(0.25, 1.0),
?(0.5, 1.0),
?(0.75, 1.0),
?(1.0, 1.0)]
Meshgrid函數(shù)的一些應(yīng)用場景
Meshgrid函數(shù)常用的場景有等高線繪制及機(jī)器學(xué)習(xí)中SVC超平面的繪制(二維場景下)。
分別圖示如下:
(1)等高線
(2)SVC中超平面的繪制:
關(guān)于場景(1)和場景(2),將在后續(xù)的文章里做進(jìn)一步描述。
當(dāng)然,可能還有些其他場景,這里就不做進(jìn)一步介紹了。
總結(jié)
原文鏈接:https://mp.weixin.qq.com/s/FI7R7zHjchRyDcV6ezQFxg
相關(guān)推薦
- 2022-05-19 Pytorch使用技巧之Dataloader中的collate_fn參數(shù)詳析_python
- 2022-06-02 C語言基于EasyX庫實(shí)現(xiàn)有圖形界面鐘表_C 語言
- 2022-06-22 Git的撤銷、修改和回退命令_其它綜合
- 2022-12-11 Redis?Cluster原理及配置詳解_Redis
- 2023-11-21 linux sudo:/etc/sudoers 中第 11 行附近有解析錯誤 sudo:no val
- 2023-11-11 flask python 設(shè)置定時任務(wù) flask 周期性執(zhí)行任務(wù)方案
- 2022-04-11 項目視圖以及項目小部件的基本用法(View表和Widget表)
- 2022-08-29 Oracle中日期的使用方法實(shí)例_oracle
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支