Исключение элементов из массивов с помощью поэлементного сравнивания (numpy)
Я только начал изучать python. А именно начал с изображения аналитических функций с помощью mathplotlib и математических вычислений с помощью numpy.
В попытках изобразить прерывную окружность, столкнулся с проблемой, что из канонического уравнения окружности не могу исключить некоторое множество точек. Попытался через np.where, но не понял сути.
r = 4
x = np.linspace(-r,r,100)
y = np.sqrt(-x**2+r**2)
np.where((y < 1.5*x or (y < -2.2*x,x,y))
plt.plot(x, y)
plt.plot(x,-y)
Вопрос: Каким образом из массива Y исключить точки, которые не входят в область y < -2.2x && y < 1.5x?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
- используйте побитовые операции над условиями, а не логические, т.е.
&и|, а неandиor - используйте в
np.whereзначениеnp.nan, чтобы пометить не нужные элементы - используйте маску, чтобы удалить из массива не нужные элементы
import matplotlib.pylab as plt
import numpy as np
r = 4
x = np.linspace(-r,r,100)
y = np.sqrt(-x**2+r**2)
index = np.where((y < 1.5*x) | (y < -2.2*x),x,np.nan)
x1 = np.ma.array(x, mask=np.isnan(index))
y1 = np.ma.array(y, mask=np.isnan(index))
plt.plot(x1, y1)
plt.plot(x,-y)
