我生成了一个随机数的图表(标准差为1,平均值为0)。我需要运行该列表并打印出每个数字,如果它是当前看到的最大的数字。例如,给定列表[10, 5, 15, 18, 5, 7, 9, 100]
,代码将打印出:
10 (first number is always going to be the biggest currently seen)
15
18
100
下面是我的代码:
import pylab
a = pylab.arange(1.0, 129.05, 1)
xrandn = pylab.zeros(129, float)
for j in range(0, 129):
xrandn[j] = pylab.randn()
pylab.plot(a, xrandn, "r-")
pylab.xlabel("Year")
pylab.ylabel("Units")
pylab.title("Possible Tempertaure Fluctuations")
pylab.show()
另外,我如何在图上标记这些点呢?
编辑1:谢谢你的回复,我现在卡在下面
我现在需要生成大量的随机数"集合",从中我需要能够检索每个集合中第一个值的最大值,然后能够访问每个集合的第二个值,然后每个集合中的第三个,等等,计算超过前一个最大值的值的数量。我试过创建一个矩阵来为我做到这一点,但是我不断得到错误消息告诉我,我不能在矩阵中使用浮点数,我现在不确定这是否是正确的方法,或者是否对以前的代码进行某种修改会产生答案。
import pylab
def make_list(size):
"""create a list of size number of zeros"""
mylist = []
for i in range(size):
y = pylab.randn()
mylist.append(y)
return mylist
def make_matrix(rows, cols):
"""
create a 2D matrix as a list of rows number of lists
where the lists are cols in size
resulting matrix contains zeros
"""
matrix = []
for i in range(rows):
matrix.append(make_list(cols))
return matrix
mx = make_matrix(10, 6)
print(mx)
最简单的方法可能是为跑步最大值绘制单独的阶梯曲线:
>>> def running_maximum(data):
result = data[:1]
for x in data[1:]:
result.append(max(x, result[-1]))
return result
>>> data = [10, 5, 15, 18, 5, 7, 9, 100]
>>> running_maximum(data)
[10, 10, 15, 18, 18, 18, 18, 100]
越简单越好
def foo(data):
lastMax=[data[0]]
for x in data[1:]:
if x>lastMax[-1]:
lastMax.append(x)
return lastMax
这个函数将打印出所有的记录高点,并返回它们的值,以及它们在数组中出现的索引。
def print_current_max(data):
m = data[0]
print m # First point will always be the biggest one yet seen.
highs = [(0, m)]
for (i, x) in enumerate(data):
if m < x:
m = x
print m
highs.append((i, m))
return highs
你可以画出所有的高点,如下所示:
highs = print_current_max(data)
X = [x for (x, y) in highs]
Y = [y for (x, y) in highs]
pylab.plot(X, Y, 'o')