📜  Python numpy.meshgrid()(1)

📅  最后修改于: 2023-12-03 15:18:57.144000             🧑  作者: Mango

Python numpy.meshgrid()

numpy.meshgrid()函数用于在多维空间中生成网格点坐标矩阵。它接受参数后返回2-D数组。

语法
numpy.meshgrid(*xi, **kwargs)
参数
  • xi:数组列表,用于定义坐标系的网格。
  • sparse:布尔值,如果为True,只返回稀疏矩阵。
返回值

meshgrid()函数返回具有两个元素的元组,这两个元素的值是输入坐标数组的所有组合。

例子
import numpy as np
 
x = np.arange(-5, 5, 1)
y = np.arange(-3, 3, 1)
X, Y = np.meshgrid(x, y)
print(X)

输出结果为:

[[-5 -4 -3 -2 -1  0  1  2  3  4]
 [-5 -4 -3 -2 -1  0  1  2  3  4]
 [-5 -4 -3 -2 -1  0  1  2  3  4]
 [-5 -4 -3 -2 -1  0  1  2  3  4]
 [-5 -4 -3 -2 -1  0  1  2  3  4]
 [-5 -4 -3 -2 -1  0  1  2  3  4]]
print(Y)

输出结果为:

[[-3 -3 -3 -3 -3 -3 -3 -3 -3 -3]
 [-2 -2 -2 -2 -2 -2 -2 -2 -2 -2]
 [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1]
 [ 0  0  0  0  0  0  0  0  0  0]
 [ 1  1  1  1  1  1  1  1  1  1]
 [ 2  2  2  2  2  2  2  2  2  2]]

在此示例中,np.meshgrid函数接受两个参数x和y,并返回两个矩阵X和Y。X和Y的坐标分别表示输入坐标中的所有x和y值的网格点坐标。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(X, Y, color='r', marker='.', linestyle='')
ax.set_xlim(-5, 5)
ax.set_ylim(-3, 3)
plt.show()

image

最后,我们还可以利用numpy的高维数组,生成更高维度的网格点矩阵。

x = np.arange(-2, 2, 1)
y = np.arange(-2, 2, 1)
z = np.arange(-2, 2, 1)

X, Y, Z = np.meshgrid(x, y, z)
print(X)

输出结果为:

[[[-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]]

 [[-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]]

 [[-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]]

 [[-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]
  [-2 -1  0  1]]]

以此类推,我们可以构造出任意维度的网格点坐标。