我确实写了一个代码来做这件事:
for i in xrange(len(Derivative)):
if ((Derivative[i-1] > Derivative[i]) and (Derivative[i+1] < Derivative[i]) and (Derivative[i-1] > 0.0) and (Derivative[i+1] < 0.0) and (Derivative[i] > 0.0)):
print str(i+1)这里的Derivative是一个列表,我必须在其中检测过零,主要是检测过零之前的值为正,过零后的值为负的那些。
为了进一步说明这个问题,我附上了Derivative的图表!
我想知道在Python中是否有更好的方法来做到这一点,我的意思是更短和精确的代码?

发布于 2013-07-16 02:45:00
你只需要将当前的导数与它后面的导数进行比较。因此,您可以删除对Derivativei-1的任何引用。如果导数大于零,而Derivativei+1小于零,那么必然是Derivativei+1 <导数。因此,您也可以删除该条件。剩下的就是:
for i in xrange(len(Derivative)-1):
if Derivative[i] > 0 and Derivative[i+1] < 0:
print "crossing between indexes {} and {}".format(i, i+1)另外,我将xrange的参数缩短了一倍。否则,你会得到list index out of range。
https://stackoverflow.com/questions/17661317
复制相似问题