📅  最后修改于: 2023-12-03 15:18:57.144000             🧑  作者: Mango
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()
最后,我们还可以利用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]]]
以此类推,我们可以构造出任意维度的网格点坐标。