首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中生成n维网格

如何在python中生成n维网格
EN

Stack Overflow用户
提问于 2017-08-09 14:38:40
回答 3查看 2.3K关注 0票数 4

我想生成一个n维网格。

对于3D网格,我有以下工作代码(在(-1,1 )之间创建一个5X5X5的网格)

代码语言:javascript
复制
import numpy as np
subdivision = 5
step = 1.0/subdivision
grid= np.mgrid[ step-1 : 1.0-step: complex(0, subdivision),
                step-1 : 1.0-step: complex(0, subdivision),
                step-1 : 1.0-step: complex(0, subdivision)]

我想把它推广到n维,比如

代码语言:javascript
复制
grid = np.mgrid[step-1 : 1.0-step: complex(0,subdivision) for i in range(n)]

但这显然行不通。我也试过了

代码语言:javascript
复制
temp = [np.linspace(step-1 , 1.0-step, subdivision) for i in range(D)]
grid = np.mgrid[temp]

但这也不起作用,因为np.mgrid接受切片

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-09 14:59:46

您可以使用实数显式定义步长,而不是使用complex。在我看来,这更简洁:

代码语言:javascript
复制
grid= np.mgrid[ step-1 : 1.0: step * 2,
                step-1 : 1.0: step * 2,
                step-1 : 1.0: step * 2]

剖析上面的代码片段,我们可以看到step-1 : 1.0: step * 2定义了一个切片,并通过,将它们分开,创建了一个由三个切片组成的元组,并将其传递给np.mgrid.__getitem__

我们可以通过构造n切片的元组将其推广到n维度:

代码语言:javascript
复制
n = 3
grid= np.mgrid[tuple(slice(step - 1, 1, step * 2) for _ in range(n))]
票数 4
EN

Stack Overflow用户

发布于 2017-08-09 15:04:05

根据kazemakase的建议,您应该使用显式的slice调用来替换“简写”切片符号step-1 : 1.0-step: complex(0,subdivision),然后将其组合到"tuple生成器“中:

代码语言:javascript
复制
D = 6
grid = np.mgrid[tuple(slice(step-1, 1.0-step, complex(0,subdivision)) for i in range(D))]

具有6D网格的结果。

票数 2
EN

Stack Overflow用户

发布于 2017-08-09 14:59:35

您可以使用meshgridlinspace来做您想做的事情。

代码语言:javascript
复制
import numpy as np
X1, X2, X3 = np.meshgrid(*[np.linspace(-1,1,5),
                           np.linspace(-1,1,5),
                           np.linspace(-1,1,5)])

对于许多维度,您可以这样做

代码语言:javascript
复制
D = 4
subdivision = 5
temp = [np.linspace(-1.0 , 1.0, subdivision) for i in range(D)]
res_to_unpack = np.meshgrid(*temp)
assert(len(res_to_unpack)==D)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45583274

复制
相关文章

相似问题

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