Мне любопытно, есть ли элегантный способ решения проблемы ниже, предпочтительно используя как можно меньше строк кода и легко запомнить, возможно встроенную функцию numpy?
Допустим, у меня есть функция f (x), и я хочу быть ленивым и генерировать пространство np.lins в диапазоне x, которое нарочно генерирует значения x, где f (x) не определена, поэтому некоторые из точек из моя строка соответствует "nan" в массиве my f (x).
Мой вопрос заключается в том, как отфильтровать (или сгенерировать два новых массива), который сохраняет только пары точек (x, f (x)), где f (x)! = Nan?
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2,2,20)
with np.errstate(all='ignore'):
fx = np.sqrt(x**2 - 1)
# here we can see "nan"
print(fx)
# want something here that removes
# (x[i], fx[i]) pair from arrays if x[i] has 'nan' as value
# <insert code>
plt.plot(x,fx)