numpy.meshgrid()理解(小结)

 更新时间:2019年08月01日 09:25:33   作者:suonikeyinsu  
这篇文章主要介绍了numpy.meshgrid()理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文的目的是记录meshgrid()的理解过程:

step1. 通过一个示例引入创建网格点矩阵;

step2. 基于步骤1,说明meshgrid()的作用;

step3. 详细解读meshgrid()的官网定义;

说明:step1和2 的数据都是基于笛卡尔坐标系的矩阵,目的是为了方便讨论。

step1. 通过一个示例引入创建网格点矩阵;

示例1,创建一个2行3列的网格点矩阵。

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
############################
#File Name: meshgrid1.py
#Brief:
#Author: frank
#Mail: frank0903@aliyun.com
#Created Time:2018-06-14 21:33:14
############################
import numpy as np
import matplotlib.pyplot as plt

X = np.array([[0, 0.5, 1],[0, 0.5, 1]])
print("X的维度:{},shape:{}".format(X.ndim, X.shape))
Y = np.array([[0, 0, 0],[1, 1, 1]])
print("Y的维度:{},shape:{}".format(Y.ndim, Y.shape))

plt.plot(X, Y, 'o--')
plt.grid(True)
plt.show()

X矩阵是:[[0. 0.5 1. ],[0. 0.5 1. ]]

Y矩阵是:[[0 0 0],[1 1 1]]

step2. meshgrid()的作用;

当要描绘的 矩阵网格点的数据量小的时候,可以用上述方法构造网格点坐标数据;

但是如果是一个(256, 100)的整数矩阵网格,要怎样构造数据呢?

方法1:将x轴上的100个整数点组成的行向量,重复256次,构成shape(256,100)的X矩阵;将y轴上的256个整数点组成列向量,重复100次构成shape(256,100)的Y矩阵

显然方法1的数据构造过程很繁琐,也不方便调用,那么有没有更好的办法呢?of course!!!

那么meshgrid()就显示出它的作用了

使用meshgrid方法,你只需要构造一个表示x轴上的坐标的向量和一个表示y轴上的坐标的向量;然后作为参数给到meshgrid(),该函数就会返回相应维度的两个矩阵;

例如,你想构造一个2行3列的矩阵网格点,那么x生成一个shape(3,)的向量,y生成一个shape(2,)的向量,将x,y传入meshgrid(),最后返回的X,Y矩阵的shape(2,3)

示例2,使用meshgrid()生成step1中的网格点矩阵

x = np.array([0, 0.5, 1])
y = np.array([0,1])

xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))

plt.plot(xv, yv, 'o--')
plt.grid(True)
plt.show()

示例3,生成一个20行30列的网格点矩阵

x = np.linspace(0,500,30)
print("x的维度:{},shape:{}".format(x.ndim, x.shape))
print(x)
y = np.linspace(0,500,20)
print("y的维度:{},shape:{}".format(y.ndim, y.shape))
print(y)

xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))

plt.plot(xv, yv, '.')
plt.grid(True)
plt.show()

step3. 详细解读meshgrid()的官网定义;

numpy.meshgrid(*xi, **kwargs)

Return coordinate matrices from coordinate vectors.

根据输入的坐标向量生成对应的坐标矩阵

Parameters:
  x1, x2,…, xn : array_like
    1-D arrays representing the coordinates of a grid.
  indexing : {‘xy', ‘ij'}, optional
    Cartesian (‘xy', default) or matrix (‘ij') indexing of output. See Notes for more details.
  sparse : bool, optional
    If True a sparse grid is returned in order to conserve memory. Default is False.
  copy : bool, optional
    If False, a view into the original arrays are returned in order to conserve memory.
    Default is True. Please note that sparse=False, copy=False will likely return non-contiguous arrays.
    Furthermore, more than one element of a broadcast array may refer to a single memory location.
    If you need to write to the arrays, make copies first.
Returns:
  X1, X2,…, XN : ndarray
    For vectors x1, x2,…, ‘xn' with lengths Ni=len(xi) ,
    return (N1, N2, N3,...Nn) shaped arrays if indexing='ij'
    or (N2, N1, N3,...Nn) shaped arrays if indexing='xy'
    with the elements of xi repeated to fill the matrix along the first dimension for x1, the second for x2 and so on.

针对indexing参数的说明:

indexing只是影响meshgrid()函数返回的矩阵的表示形式,但并不影响坐标点

x = np.array([0, 0.5, 1])
y = np.array([0,1])

xv,yv = np.meshgrid(x, y)
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))
print(xv)
print(yv)

plt.plot(xv, yv, 'o--')
plt.grid(True)
plt.show()

x = np.array([0, 0.5, 1])
y = np.array([0,1])

xv,yv = np.meshgrid(x, y,indexing='ij')
print("xv的维度:{},shape:{}".format(xv.ndim, xv.shape))
print("yv的维度:{},shape:{}".format(yv.ndim, yv.shape))
print(xv)
print(yv)

plt.plot(xv, yv, 'o--')
plt.grid(True)
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python3使用正则表达式爬取内涵段子示例

    Python3使用正则表达式爬取内涵段子示例

    这篇文章主要介绍了Python3使用正则表达式爬取内涵段子,涉及Python正则匹配与文件读写相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • python爬取王者荣耀全皮肤的简单实现代码

    python爬取王者荣耀全皮肤的简单实现代码

    在本篇文章里小编给大家分享的是一篇关于16行python代码 爬取王者荣耀全皮肤的知识点内容,有兴趣的朋友们学习下。
    2020-01-01
  • Python绘制专业的K线图 源代码解析

    Python绘制专业的K线图 源代码解析

    这篇文章主要介绍了Python绘制专业的K线图,使用Python绘制一幅专业的K线图,是量化投资和金融数据分析的必备功课。下面我将从K线图简介、数据获取、K线图绘制及成交量绘制等方面,结合源代码,一步步实现专业K线图的绘制,需要的朋友可以参考下
    2021-10-10
  • 用PyQt进行Python图形界面的程序的开发的入门指引

    用PyQt进行Python图形界面的程序的开发的入门指引

    这篇文章主要介绍了用PyQt进行Python图形界面的程序的开发的入门指引,来自于IBM官方网站技术文档,需要的朋友可以参考下
    2015-04-04
  • Python 统计数据集标签的类别及数目操作

    Python 统计数据集标签的类别及数目操作

    这篇文章主要介绍了Python 统计数据集标签的类别及数目操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python爬取盘搜的有效链接实现代码

    python爬取盘搜的有效链接实现代码

    这篇文章主要介绍了python爬取盘搜的有效链接,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • python elasticsearch环境搭建详解

    python elasticsearch环境搭建详解

    在本篇文章里小编给大家整理的是关于python elasticsearch环境搭建的相关知识点内容,有需要的朋友们可以参考下。
    2019-09-09
  • python图片处理库Pillow实现简单PS功能

    python图片处理库Pillow实现简单PS功能

    Python 届处理图片最强的库是 PIL(Python Image Library),但由于该库只支持 2.x 版本,在此基础上做了扩展,出了一个兼容 3.x 的版本也就是 Pillow,因此,我们今天要用的库就是Pillow
    2021-11-11
  • Python中线程threading.Thread的使用详解

    Python中线程threading.Thread的使用详解

    python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。本文将为大家详细介绍一下python中的线程threading.Thread()的使用,需要的可以参考一下
    2022-07-07
  • 基于Python手写拼音识别

    基于Python手写拼音识别

    这篇文章主要介绍了基于Python手写拼音识别,因项目组需要使用到拼写识别,考虑到每个字母的复杂度不高,所以使用KNN算法来尝试实现,下面来看看具体实现详情吧,需要的小伙伴也可以参考一下
    2022-01-01

最新评论