如何打印出使用随机数设置新记录(在数组中)的时间



我生成了一个随机数的图表(标准差为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')

最新更新