Kev*_*fer 0 python arrays math numpy logarithm
from numpy import *
from pylab import plot,show
q=10
time = range(q)
mlist=empty(q)
nlist=empty(q)
m=.9
n=(m+(1e-6))
b=3
for t in range(q):
mlist[t]=m
nlist[t]=n
m=(b*(1-m)*m)
n=(b*(1-n)*n)
zlist = mlist-nlist
zlist = abs(zlist)
plot(time, log(zlist))
show()
Run Code Online (Sandbox Code Playgroud)
然后我想绘制时间图,log(zlist)
每次我运行程序时,都会收到此错误."plot(time,log(zlist))TypeError:只能将length-1数组转换为Python标量"
任何想法如何使zlist不是一个数组所以我可以采取日志,或者只是我的程序出了什么问题?其他一切都很好,只有一个问题.(仅供注意,我已导入pylab,numpy和数学)
编辑:q值相对不重要,但理想情况下最终会在500-1000范围内上升.并且m和n必须在0和1之间,b必须在0和4之间.
编辑X2:它似乎现在正在工作,我不知道为什么,但它可能是a)从数学导入日志,或b,负值问题,但无论如何,它运作良好.谢谢所有贡献的人!
我怀疑你做了from math import *之后from numpy import *意味着它log真的math.log不适用于阵列.
你真的不应该import *在脚本中使用.相反,你应该这样做
import numpy as np
import matplotlib.pyplot as plt
q=10
time = np.arange(q)
mlist = np.empty(q)
nlist = np.empty(q)
m=.9
n=(m+(10e-6))
b=3
for t in range(q):
mlist[t]=m
nlist[t]=n
m *=b*(1-m)
n *=b*(1-n)
zlist = mlist-nlist
plt.plot(time, np.log(zlist))
Run Code Online (Sandbox Code Playgroud)
或更好
plt.semilogy(time, zlist)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10616 次 |
| 最近记录: |