我有一个功能
np.sin(x / 2.) * np.exp(x / 4.) + 6. * np.exp(-x / 4.)
我可以使用以下代码绘制它:
x = np.arange(-5, 15, 2)
y = np.sin(x / 2.) * np.exp(x / 4.) + 6. * np.exp(-x / 4.)
plt.plot(x, y)
plt.show()
但如果我定义函数绘图不起作用:
rr = np.arange(-5, 15, 2)
def y(o):
return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)
def h(b):
return int(y(b))
plt.plot(rr, h)
plt.show()
为什么会发生这种情况,如何更改代码以绘制函数?
答案 0 :(得分:8)
请改为尝试:
import numpy as np
import matplotlib.pyplot as plt
rr = np.arange(-5, 15, 2)
def y(o):
return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)
plt.plot(rr, y(rr).astype(np.int))
plt.show()
答案 1 :(得分:2)
匈奴的答案很好。
但是,如果你非常具体地使用两个函数定义,那么试试这个:
def y(o):
return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)
def h(b):
l = []
for i in b:
l.append(int(y(i)))
return l
rr = np.arange(-5, 15, 2)
plt.plot(rr, h(rr))
plt.show()
要回答代码无效的原因,当您调用函数' h'时,您没有传递任何参数,因此返回函数的函数定义或内存位置指针。即使你已经将rr传递给h,也没有处理h将其转换为可迭代的。