由于某些原因,我在获取模块对象时此代码无法调用错误......我真的不明白为什么?
def func (t,a,x):
return
`plt.plot(t,(exp(a*t))*x(), label="lalala")`
....和追溯
plt.plot(t,(exp(a*t))*x(), label="lalala")
TypeError: 'numpy.ndarray' object is not callable
x=np.array([1,100])
t=np.linspace(1,10,400)
def func (t,a,x):
return plt.plot(t,(exp(a*t))*x, label="lalala")
现在我明白了:
ValueError:操作数无法与形状(400,)(2,)
一起广播目标是使用函数绘制图形:
exp(a*t)*x
t...=>y= exp(a*t)*x
,t是x轴。
a
是洞时间常数,t(1,10,400)
和x(1,100)
更改。
答案 0 :(得分:0)
确定您之后的内容有点难以理解,但根据您的修改,您似乎有两个x
值,您想要绘制y = x.exp的图表(at)超过t=np.linspace(1,10,400)
的时间范围。在这种情况下:
import numpy as np
import matplotlib.pyplot as plt
a = 2
x = np.array([1,100])
t=np.linspace(1,10,400)
def func(t, a, z):
return z * np.exp(a * t)
plt.plot(t,func(t, a, x[0]))
plt.plot(t,func(t, a, x[1]))
您收到错误是因为x
是两个值的数组,而NumPy没有(没有一些帮助)知道如何"广播"与时间数组相关的这两个值。如果您希望func
生成一个形状(2,400)
的数组以响应输入x
,请使用np.newaxis
在x
数组中创建缺少的第二个轴:
func(t, a, x[:,np.newaxis])