我理解如何制作一个像这样的简单网格网格:
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个矩形并堆叠它们。有什么更好的方法呢?
答案 0 :(得分:3)
您可以先创建外部矩形,然后使用过滤器取出内部矩形:
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)
答案 1 :(得分:1)
你可以使用bool面具:
low1 = -1; high1 = 1;
n_p = 20
range1 = np.linspace(low1, high1,n_p//2, endpoint=False)
X, Y = np.meshgrid(range1, range1)
mask = ~((X < 0.4) & (X > -0.4) & (Y < 0.4) & (Y > -0.4))
np.c_[X[mask], Y[mask]]