看一个简单的例子:
设有一个3阶方阵Z,
其值由式子x^2 + y^2生成。
x的取值为4,5,6;
y的取值为7,8,9。
按常规的思路应该是由两个循环生成方阵Z,即如下的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#作者微信/QQ 2487872782
#有问题可以联系作者交流import numpy as npZ = np.zeros((3, 3), np.int)x = np.array([4, 5, 6])
y = np.array([7, 8, 9])for i in range(0, 3):for j in range(0, 3):Z[i, j] = x[i]**2 + y[j]**2

生成的Z矩阵如下:

这种情况下,我们就可以用函数meshgrid()的来简化代码并加速程序运行速度了。
当我们用函数meshgrid()后,代码就清爽了,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 对这篇博文或该程序有不明白的可以加微信/QQ 2487872782交流import numpy as npx = np.array([4, 5, 6])
y = np.array([7, 8, 9])
X, Y = np.meshgrid(x, y)Z_2 = X**2 + Y**2

生成的Z_2矩阵如下:

可见结果是一样的。
在使用了函数meshgrid()后,
①去掉了嵌套的两个for循环,我们知道,for循环的嵌套是很消耗运算资源的,在DSP(数字信号处理)中,为了提高运行速度,我们往往要对for循环进行精简。
②简化了代码,避免代码出错,也减少了我们程序员的工作量。

接下来说meshgrid()对向量进行了怎样的操作?
下面这张图说得很明白:

大家重点看我画红框中的两个矩阵,即图中的矩阵xv和矩阵yv,这是它们的生成的示意图。

一个简单的实例更有利于大家理解:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 对这篇博文或该程序有不明白的可以加微信/QQ 2487872782交流import numpy as npx = np.array([4, 5, 6])
y = np.array([7, 8])
X, Y = np.meshgrid(x, y)

运行结果如下:

可见,矩阵X和矩阵Y的确是按照示意图中生成的。
具体的细节这篇博文就不多说了,多说反而不利于大家理解。

总结一下:
当两个向量中的元素分别遍历作运算然后生成一个新的矩阵时,一定不要忘了用函数meshgrid()简化代码。当你要用两个for循环的嵌套时,你先要想想能不能用函数meshgrid()进行操作。

python扩展库numpy中函数meshgrid()的使用[当你想要两个for循环嵌套处理时,就该想到它]相关推荐

  1. Python扩展库numpy中where()函数的三种用法

    第一种用法:只给where()函数传递一个数组作为参数,返回其中非0元素的下标. 第二种用法:给where()函数传递一个包含True/False值的数组,返回该数组中True值的下标,结合numpy ...

  2. 爱因斯坦求和约定在Python扩展库Numpy中的实现

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年12月第 ...

  3. Python扩展库numpy中的布尔运算

    首先解答上一篇文章Win10系统配置Python3.6+OpenGL环境详细步骤中的问题.该问题的答案为[2, 2],要点在于列表对象的方法index()默认是返回指定元素在列表中首次出现的下标,元组 ...

  4. 使用Python扩展库numpy中的piecewise()函数实现分段函数模拟兔子的行走轨迹,然后使用matplotlib.pyplot中的plot函数绘制折线图表示兔子和乌龟的时间位移图,并添加坐标

    import matplotlib.pyplot as plt import numpy as np #使用参数字典 rcParams 访问并修改已经加载的配置项 plt.rcParams['font ...

  5. Python科学计算扩展库numpy中的广播运算

    首先解答上一个文章Python扩展库numpy中的布尔运算中的问题,该题答案为[111, 33, 2],题中表达式的作用是按列表中元素转换为字符串后的长度降序排序. ----------------- ...

  6. 详解Python科学计算扩展库numpy中的矩阵运算(1)

    首先解答上一篇文章中使用with关键字让你的Python代码更加Pythonic最后的习题,该题答案是False,原因在于内置函数sorted()的参数reverse=True时表示降序排序,而内置函 ...

  7. python中的numpy函数算相关系数_扩展库numpy的函数corrcoef()用来计算相关系数矩阵。...

    [判断题]不同的考试对于词汇能力提出不同的要求.考试水平越高,对学生词汇能力的要求越高. [单选题]利率互换交易的现金流错配风险是指( ) [多选题]石墨可以用来制作铅笔芯,是利用了其 ( )性质. ...

  8. python标准库random中函数的作用_Python随机函数库random的使用方法详解

    Python随机函数库random的使用方法详解 前言 众所周知,python拥有丰富的内置库,还支持众多的第三方库,被称为胶水语言,随机函数库random,就是python自带的标准库,他的用法极为 ...

  9. Python扩展库scipy中值滤波算法的应用

    中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...

最新文章

  1. OS X 下在代码中枚举所有进程的方法
  2. ios开发证书,描述文件,bundle ID的关系
  3. ediplus 复制编辑一列_vi编辑器的使用详解
  4. fx系列微型可编程控制器 通信_电气人,三菱Q系列和FX PLC系列之间的区别你都知道吗?...
  5. 收藏!架构师需要掌握的99条铁律
  6. python程序设计基础第三版_Python程序设计(第三版)PPT及源码
  7. zabbix监控硬盘
  8. Android内存优化12 内存泄漏常见情况3 注册泄漏
  9. java技术体系基础
  10. ffmpeg下载m3u8文件
  11. CString的拆分词函数Tokenize
  12. PHP获取网页返回的JSON数据并在微信换行展示
  13. 谈软件系统的标准化和产品化
  14. Debezium系列之:安装部署debezium2.0以上版本的详细步骤
  15. 微信小程序跳一跳外挂matlab版本
  16. android intent 传递int参数,intent的getIntExtra步骤得不到值
  17. 自己动手做聊天机器人 三-语料与词汇资源
  18. 基于Cesium的卫星及空间碎片的轨迹展示
  19. Execution failed for task ‘:app:kaptDebugKotlin‘. > A failure occurred while executing org.jetbrains
  20. mp4视频压缩怎么压缩到最小

热门文章

  1. reportviewer+mysql_ReportViewer 动态绑定
  2. ROS机器人操作系统个人笔记,用于Ctrl+F查询
  3. 网络丢包工具clumsy
  4. 骨传导耳机哪个好、骨传导耳机排名
  5. #10166. 「一本通 5.3 练习 1」数字游戏
  6. 发改委:加大下一代互联网试商用投入
  7. 单纯形法python程序_Python-linprog最小化误差单纯形法
  8. java学习--硬件\软件\常用快捷键\常用DOS命令
  9. html css is图片,isbackground
  10. 08.24python单元测试之unittest