首页 > 解决方案 > 如何在 numpy 中制作带有孔的网格?

问题描述

我了解如何制作像这样的简单网格:

low1 = -1; high1 = 1;
n_p = 20
range1 = np.linspace(low1, high1,n_p/2, endpoint=False)
X = np.dstack(np.meshgrid(range1, range1)).reshape(-1, 2)

在此处输入图像描述

但是像下图这样制作网格的最佳方法是什么?

在此处输入图像描述

现在我正在构建 8 个矩形并将它们堆叠起来。有什么更好的方法呢?

标签: pythonnumpyscipypython-3.6

解决方案


您可以先创建外部矩形,然后使用过滤器取出内部矩形:

x = np.linspace(-2, 2, 20, endpoint=False)
X = np.dstack(np.meshgrid(x, x)).reshape(-1, 2)       # outer rectangle

X[(np.abs(X + 0.1) > 1).any(1)].shape                 # take out the inner rectangle
# (300, 2)   300 = 20 * 20 (outer) - 10 * 10 (inner)

推荐阅读