我有以下代码:
def f(x):
return x
def g(x):
return x*x
from math import sqrt
def h(x):
return sqrt(x)
def i(x):
return -x
def j(x):
return -x*x
def k(x):
return -sqrt(x)
functions = [f, g, h, i, j, k]
现在我试图绘制这些功能。
我试过
plt.plot(f(x), g(x), h(x))
但是我收到以下错误:
TypeError:只能将length-1数组转换为Python标量
我认为这是因为我使用的是有两个解决方案的平方根。但实际上,我正在尝试做类似的事情:
plt.plot(*functions)
有什么建议吗?
答案 0 :(得分:3)
math.sqrt
仅接受标量值。
使用numpy.sqrt
计算列表或NumPy数组中每个值的平方根:
In [5]: math.sqrt(np.array([0,1]))
TypeError: only length-1 arrays can be converted to Python scalars
In [6]: np.sqrt(np.array([0,1]))
Out[6]: array([ 0., 1.])
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x
def g(x):
return x*x
def h(x):
return np.sqrt(x)
def i(x):
return -x
def j(x):
return -x*x
def k(x):
return -np.sqrt(x)
x = np.linspace(0, 1, 100)
functions = [f, g, h, i, j, k]
for func in functions:
plt.plot(func(x), label=func.__name__)
plt.legend(loc='best')
plt.show()