np.meshgrid()函数
X, Y = np.meshgrid(x, y) 代表的是将x中每一个数据和y中每一个数据组合生成很多点,然后将这些点的x坐标放入到X中,y坐标放入Y中,并且相应位置是对应的。
但np.meshgrid()生成的并不是二维空间中的坐标,还需要把对应位置的两个值合并在一起,才是坐标位置。
例子一说明
我们看下面的代码:
import numpy as np
x = np.linspace(0, 2, 3)
y = np.linspace(0, 1, 2)
X, Y = np.meshgrid(x, y)
coors = np.concatenate((X[:, :, None], Y[:, :, None]), axis=-1)
print(X)
print(Y)
print(X[:, :, None])
print(Y[:, :, None])
print(coors)
输出的结果为:
# X
[[0. 1. 2.]
[0. 1. 2.]]
# Y
[[0. 0. 0.]
[1. 1. 1.]]
# X[:, :, None]
[[[0.]
[1.]
[2.]]
[[0.]
[1.]
[2.]]]
# Y[:, :, None]
[[[0.]
[0.]
[0.]]
[[1.]
[1.]
[1.]]]
# coors
[[[0. 0.]
[1. 0.]
[2. 0.]]
[[0. 1.]
[1. 1.]
[2. 1.]]]
可以看到,np.meshgrid()生成的值,要再经过一次np.concatenate()才是坐标
例子二说明
再举一个例子,二维坐标系中,X轴可以取三个值1,2,3, Y轴可以取三个值7,8, 请问可以获得多少个点的坐标?显而易见是6个:
(1,7)(2,7)(3,7)
(1,8)(2,8)(3,8)
对应的代码显示:
import numpy as np
a = np.array([1,2,3])
b = np.array([7,8])
# 从坐标向量中返回坐标矩阵
# 返回list,有两个元素,第一个元素是X轴的取值,第二个元素是Y轴的取值
res = np.meshgrid(a,b)
print(res)
输出结果为:
[array([ [1,2,3] [1,2,3] ]), array([ [7,7,7] [8,8,8] ])]
参考
https://blog.csdn.net/littlehaes/article/details/83543459?
https://blog.csdn.net/jiongta9473/article/details/125179947?