I am trying to create a meshgrid without some of the points that falls within the circle having specified coordinates and a radius. I am not able to subtract the grid points
You cannot remove the points within the arrays x
and y
. It is a 2D problem and the values that need to be removed from x
depend on y
and inversely.
What you can do is operate directly on the mesh you created (X
and Y
). For example,
import math
import numpy
import matplotlib.pyplot as plt
N = 200
x_start, x_end = -2.0, 2.0
y_start, y_end = -2.0, 2.0
x = numpy.linspace(x_start, x_end, N)
y = numpy.linspace(y_start, y_end, N)
circle_x, circle_y, r= 0.0, 0.0, 0.4
X, Y = numpy.meshgrid(x, y)
## Define points within circle
pts = (X-circle_x)**2+(Y-circle_y)**2 <= r**2
## Create a constant mask over grid
M = numpy.ones(X.shape)
## Assign 0 to mask for all points within circle
M[pts] = 0
size = 10
fig = plt.figure()
plt.imshow(M)
plt.show()
This does not remove any points from X
or Y
. If instead, you wish to only perform calculations on part of the points, you could do
pts = (X-circle_x)**2+(Y-circle_y)**2 > r**2
X = X[pts]
Y = Y[pts]
plt.scatter(X,Y)
plt.show()