首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的网格网格函数(meshgrid mgrid ogrid ndgrid)

Python中的网格网格函数(meshgrid mgrid ogrid ndgrid)
EN

Stack Overflow用户
提问于 2012-09-13 16:12:27
回答 2查看 63.1K关注 0票数 81

我正在寻找一个类似于网格的函数的清晰比较。不幸的是,我没有找到它!

Numpy http://docs.scipy.org/doc/numpy/reference/提供了

  • mgrid
  • ogrid
  • meshgrid

Scitools http://hplgit.github.io/scitools/doc/api/html/index.html提供了

  • ndgrid
  • boxgrid

理想情况下,一个总结所有这一切的表格将是完美的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-13 18:40:35

numpy.meshgrid是以Matlab的meshgrid命令为模型的。它用于向量化两个变量的函数,以便您可以编写

代码语言:javascript
复制
x = numpy.array([1, 2, 3])
y = numpy.array([10, 20, 30]) 
XX, YY = numpy.meshgrid(x, y)
ZZ = XX + YY

ZZ => array([[11, 12, 13],
             [21, 22, 23],
             [31, 32, 33]])

所以ZZ包含了放入函数中的xy的所有组合。仔细想想,meshgrid对于numpy数组来说有点多余,因为它们是广播的。这意味着您可以

代码语言:javascript
复制
XX, YY = numpy.atleast_2d(x, y)
YY = YY.T # transpose to allow broadcasting
ZZ = XX + YY

并得到相同的结果。

mgridogrid是使用索引表示法的助手类,因此您可以在前面的示例中直接创建XXYY,而不必使用linspace之类的东西。生成输出的顺序是颠倒的。

代码语言:javascript
复制
YY, XX = numpy.mgrid[10:40:10, 1:4]
ZZ = XX + YY # These are equivalent to the output of meshgrid

YY, XX = numpy.ogrid[10:40:10, 1:4]
ZZ = XX + YY # These are equivalent to the atleast_2d example

我不熟悉scitools的东西,但ndgrid似乎等同于meshgrid,而BoxGrid实际上是一个完整的类来帮助这种生成。

票数 88
EN

Stack Overflow用户

发布于 2018-04-15 01:23:55

np.mgridnp.meshgrid()做同样的事情,但是第一个和第二个轴是交换的:

代码语言:javascript
复制
# 3D
d1, d2, d3 = np.mgrid[0:10, 0:10, 0:10]
d11, d22, d33 = np.meshgrid(np.arange(10),np.arange(10),np.arange(10))
np.array_equal(d1,d11)

生成False。只需交换前两个维度:

代码语言:javascript
复制
d11 = np.transpose(d11,[1,0,2])
np.array_equal(d1,d11)

生成True

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12402045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档