有人可以在乎解释meshgrid方法吗?我不能全神贯注于它。该示例来自[SciPy] [1]网站:

import numpy as np

nx, ny = (3, 2)
x = np.linspace(0, 1, nx)
print ("x =", x)

y = np.linspace(0, 1, ny)
print ("y =", y)

xv, yv = np.meshgrid(x, y)
print ("xv_1 =", xv)
print ("yv_1 =", yv)


xv, yv = np.meshgrid(x, y, sparse=True)  # make sparse output arrays
print ("xv_2 =", xv)

print ("yv_2 =", yv)
打印输出为:
x = [ 0.   0.5  1. ]
y = [ 0.  1.]
xv_1 = [[ 0.   0.5  1. ]
 [ 0.   0.5  1. ]]
yv_1 = [[ 0.  0.  0.]
 [ 1.  1.  1.]]
xv_2 = [[ 0.   0.5  1. ]]
yv_2 = [[ 0.]
 [ 1.]]
为什么数组xv_1和yv_1这样形成?泰:)
[1]:http://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html#numpy.meshgrid

最佳答案

In [214]: nx, ny = (3, 2)
In [215]: x = np.linspace(0, 1, nx)
In [216]: x
Out[216]: array([ 0. ,  0.5,  1. ])
In [217]: y = np.linspace(0, 1, ny)
In [218]: y
Out[218]: array([ 0.,  1.])

使用解压缩可以更好地查看meshgrid生成的2个数组:
In [225]: X,Y = np.meshgrid(x, y)
In [226]: X
Out[226]:
array([[ 0. ,  0.5,  1. ],
       [ 0. ,  0.5,  1. ]])
In [227]: Y
Out[227]:
array([[ 0.,  0.,  0.],
       [ 1.,  1.,  1.]])

以及稀疏版本。请注意,X1看起来像一行X(但为2d)。和Y1就像Y的一列。
In [228]: X1,Y1 = np.meshgrid(x, y, sparse=True)
In [229]: X1
Out[229]: array([[ 0. ,  0.5,  1. ]])
In [230]: Y1
Out[230]:
array([[ 0.],
       [ 1.]])

在加号和时间之类的计算中使用时,两种形式的行为相同。那是因为numpy's广播。
In [231]: X+Y
Out[231]:
array([[ 0. ,  0.5,  1. ],
       [ 1. ,  1.5,  2. ]])
In [232]: X1+Y1
Out[232]:
array([[ 0. ,  0.5,  1. ],
       [ 1. ,  1.5,  2. ]])

形状也可能会有所帮助:
In [235]: X.shape, Y.shape
Out[235]: ((2, 3), (2, 3))
In [236]: X1.shape, Y1.shape
Out[236]: ((1, 3), (2, 1))
XY具有比大多数用途实际需要的值更多的值。但是通常使用它们代替稀疏版本并不会受到太多的惩罚。

关于python - numpy.meshgrid说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39662699/

10-12 16:38