Есть лучшие способы сделать это, если производительность является проблемой, но одно решение состоит в том, чтобы сериализовать вашу функцию, чтобы применить ее ко всему массиву
def y(x):
if x <0:
return np.cos(x)
else:
return np.exp(-x)
vfunc = np.vectorize(y)
x = np.arange(-2*np.pi,2*np.pi,0.1)
plt.plot(x,vfunc(x))
plt.show()
Возможно, лучше с точки зрения производительности:
def y(x):
return np.concatenate((np.cos(x[x<0]), np.exp(-x[x>=0])))
x = np.arange(-2*np.pi,2*np.pi,0.1)
plt.plot(x,y(x))
plt.show()