有人可以关心这个meshgrid方法吗?我无法绕过它.该示例来自SciPy网站:
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)
Run Code Online (Sandbox Code Playgroud)
打印输出是:
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.]]
Run Code Online (Sandbox Code Playgroud)
为什么数组xv_1和yv_1是这样形成的?Ty :)
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.])
Run Code Online (Sandbox Code Playgroud)
使用解包更好地查看由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.]])
Run Code Online (Sandbox Code Playgroud)
和稀疏版本。请注意,它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.]])
Run Code Online (Sandbox Code Playgroud)
在加号和时间等计算中使用时,两种形式的行为相同。那是因为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. ]])
Run Code Online (Sandbox Code Playgroud)
这些形状也可能有帮助:
In [235]: X.shape, Y.shape
Out[235]: ((2, 3), (2, 3))
In [236]: X1.shape, Y1.shape
Out[236]: ((1, 3), (2, 1))
Run Code Online (Sandbox Code Playgroud)
在X与Y具有比实际需要对大多数用户更多的价值。但通常使用它们代替稀疏版本不会有太大的损失。
| 归档时间: |
|
| 查看次数: |
8218 次 |
| 最近记录: |