Python中数组的对数

2024-09-30 08:34:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

然后我要绘制时间的图表,log(zlist)

每次我运行程序,我都会得到这个错误。 “绘图(时间,日志(zlist)) TypeError:只有length-1数组可以转换为Python标量“

有什么办法可以让zlist不是一个数组,这样我就可以记录日志,或者我的程序出了什么问题? 其他的都很好,只有一个问题。 (注意,我已经导入了pylab、numpy和math)

编辑:q值相对来说不重要,但理想情况下最终会在500-1000之间。m和n必须介于0和1之间,b必须介于0和4之间。

编辑X2:它现在似乎可以工作了,我不知道为什么,但它可以是a)从数学导入日志,或者b,负值问题,但不管怎样,它工作得很好。感谢大家的贡献!


Tags: fromimport程序numpylogtimeplotshow
2条回答

试试看

plot(time, map(log, zlist))

这将对zlist中的每个数字应用log函数。

我怀疑您在from numpy import *之后做了from math 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))

或者,更好

plt.semilogy(time, zlist)

相关问题 更多 >

    热门问题