当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy.meshgrid()用法及代码示例


Python 的 numpy 模块提供了 meshgrid() 函数,用于在给定的表示矩阵索引或笛卡尔索引的一维数组的帮助下创建矩形网格。 MATLAB 在某种程度上启发了 meshgrid() 函数。 meshgrid() 函数根据坐标向量返回坐标矩阵。

numpy.meshgrid()

在上图中,x轴的范围是-5到5,y轴的范围是-5到5。所以,图中总共标记了121个点,每个点都有x坐标和y 坐标。对于任何平行于x轴的直线,标记点的x-coordinates分别为-5、-4、-3、-2、-1、0、1、2、3、4和5。另一方面,对于任何平行于y轴的直线,从下到上标记点的y-coordinates为-5、-4、-3、-2、-1、0、1、2、3、4 , 和 5 分别。

用法

numpy.meshgrid(*xi, **kwargs)

参数

x1, x2,‌, xn:数组

此参数定义一维数组,表示网格的坐标。

索引:{'xy', 'ij'}(可选)

这是一个可选参数,用于定义输出的笛卡尔 'xy'(默认情况下)或矩阵 ('ij') 索引。

稀疏:布尔(可选)

该参数也是可选的。如果我们需要一个稀疏网格来节省内存,我们必须将此参数设置为 True。默认情况下,它设置为 False。

复制:布尔(可选)

此可选参数的目的是返回原始数组的副本以节省内存。默认情况下,它设置为 False。

如果 sparse 和 copy 参数都设置为 False,那么它将返回非连续数组。此外,广播数组的多个元素可以引用单个内存位置。如果我们需要写入数组,那么我们必须先进行复制。

返回

X1, X2, ‌, Xn

此函数返回坐标向量的坐标长度。

范例1:

import numpy as np
na, nb = (5, 3)
a = np.linspace(1, 2, na)
b = np.linspace(1, 2, nb)
xa, xb = np.meshgrid(a, b)
xa
xb

输出:

array([[1.  , 1.25, 1.5 , 1.75, 2.  ],
       	[1.  , 1.25, 1.5 , 1.75, 2.  ],
       	[1.  , 1.25, 1.5 , 1.75, 2.  ]])
array([[1. , 1. , 1. , 1. , 1. ],
       	[1.5, 1.5, 1.5, 1.5, 1.5],
       	[2. , 2. , 2. , 2. , 2. ]])

在上面的代码中

  • 我们已经导入了别名为 np.
  • 我们创建了两个变量,即 na 和 nb,并分别赋值为 5 和 3。
  • 我们使用 linspace() 函数创建了两个数组,即 a 和 b。
  • 之后,我们声明了变量 'xa' 和 'xb' 并赋值了 meshgrid() 的返回值
  • 我们已经在函数中传递了数组 'a' 和 'b'
  • 最后,我们尝试打印 'xa' 和 'xb' 的值。

在输出中,显示了两个数组,其中包含坐标向量的坐标长度。

范例2:

import numpy as np
na, nb = (5, 3)
a = np.linspace(1, 2, na)
b = np.linspace(1, 2, nb)
xa, xb = np.meshgrid(a, b, sparse=True)
xa
xb

输出:

array([[1.  , 1.25, 1.5 , 1.75, 2.  ]])
array([[1. ],
       	[1.5],
       	[2. ]])

范例3:

import numpy as np
import matplotlib.pyplot as plt
a = np.arange(-10, 10, 0.1)
b = np.arange(-10, 10, 0.1)
xa, xb = np.meshgrid(a, b, sparse=True)
z = np.sin(xa**2 + xb**2) / (xa**2 + xb**2)
h = plt.contourf(a,b,z)
plt.show()

输出:

numpy.meshgrid()

在上面的代码中

  • 我们已经导入了别名为 np.
  • 我们已将 matplotlib.pyplot 作为 plt 导入。
  • 我们使用 np.arange() 函数创建了两个数组,即 a 和 b。
  • 之后,我们声明了变量 'xa' 和 'xb' 并赋值了 meshgrid() 的返回值
  • 我们已经在函数中传递了数组 'a' 和 'b'。
  • 之后,我们声明了一个变量 z 并分配了 np.sine() 函数的返回值。
  • 最后,我们尝试使用 plt.contourf() 绘制轮廓线和填充轮廓

在输出中,绘制了等高线。

范例4:

import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(-5, 5, 5)
b = np.linspace(-5, 5, 11)
random_data = np.random.random((11, 5))
xa, xb = np.meshgrid(a, b)
plt.contourf(xa, xb, random_data, cmap = 'jet')
plt.colorbar()
plt.show()

输出:

numpy.meshgrid()

范例5:

import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(-5, 5, 5)
b = np.linspace(-5, 5, 11)
random_data = np.random.random((11, 5))
xa, xb = np.meshgrid(a, b)
sine = (np.sin(xa**2 + xb**2))/(xa**2 + xb**2)
plt.contourf(xa, xb, sine, cmap = 'jet')
plt.colorbar()
plt.show()

输出:

numpy.meshgrid()



相关用法


注:本文由纯净天空筛选整理自 numpy.meshgrid() in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。