numpy.meshgrid() in Python
numpy.meshgrid函数用于从表示笛卡尔索引或矩阵索引的两个给定一维数组中创建矩形网格。网格函数是从MATLAB中得到启发的。
语法
numpy.asarray(arr,dtype=None,order=None)
参数
x1, x2,…, xn: array_like
表示网格坐标的一维数组。
indexing: {‘xy’, ‘ij’},可选
输出的笛卡尔(‘xy’,默认)或矩阵(‘ij’)索引。有关详细信息,请参阅注释。
sparse: 布尔型,可选
如果为 True,则返回维度坐标数组的形状i从减少(N1, ..., Ni, ... Nn)到(1, ..., 1, Ni, 1, ..., 1).这些稀疏坐标网格旨在与广播.在表达式中使用所有坐标时,广播仍会导致 fully-dimensonal 结果数组。
默认为假。
copy: 布尔型,可选
如果为 False,则返回原始数组的视图以节省内存。默认为真。请注意,sparse=False, copy=False 可能会返回不连续的数组。此外,广播数组的不止一个元素可以指代单个存储器位置。如果您需要写入数组,请先制作副本。
返回
X1, X2,…, XN: ndarray
对于向量x1,x2,..., ‘xn’ 有长度Ni=len(xi), 返回(N1, N2, N3,...Nn)如果 indexing='ij' 或(N2, N1, N3,...Nn)如果 indexing='xy' 的元素为xi重复以沿第一维填充矩阵x1,第二个为x2等等。
例子
考虑下图,X轴范围为-4到4,Y轴范围为-5到5。因此,图中总共标记了(9*11)=99个点,每个点都有一个X坐标和一个Y坐标。对于任何平行于X轴的直线,标记点的X坐标分别为-4、-3、-2、-1、0、1、2、3、4。另一方面,对于任何平行于Y轴的直线,标记点从下到上的Y坐标为-5、-4、-3、-2、-1、0、1、2、3、4、5。numpy.meshgrid函数返回两个二维数组,表示所有点的X和Y坐标。
import numpy as np
from matplotlib import pyplot as plt
x = np.linspace(-4, 4, 9)
y = np.linspace(-5, 5, 11)
x_1, y_1 = np.meshgrid(x, y)
print("x_1 = ")
print(x_1)
print("y_1 = ")
print(y_1)
plt.plot(x_1,y_1,color='red',marker='.',linestyle='')
plt.grid(True)
plt.show()
输出
x_1 =
[[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]
[-4. -3. -2. -1. 0. 1. 2. 3. 4.]]
y_1 =
[[-5. -5. -5. -5. -5. -5. -5. -5. -5.]
[-4. -4. -4. -4. -4. -4. -4. -4. -4.]
[-3. -3. -3. -3. -3. -3. -3. -3. -3.]
[-2. -2. -2. -2. -2. -2. -2. -2. -2.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[ 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[ 3. 3. 3. 3. 3. 3. 3. 3. 3.]
[ 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[ 5. 5. 5. 5. 5. 5. 5. 5. 5.]]
画图