我认为这是一个相对简单的问题,因为我知道在numpy中有一个简单的答案,但我找不到它了。
我有一个numpy数组,比如[1, 2, 10, 5, 6, 12, 9, 9, 8]
我想从头到尾遍历它,并只保留到目前为止看到的最大值,例如答案将是[1, 2, 10, 10, 10, 12, 12, 12, 12]
用单个循环很容易解决,但是我之前学过一种使用numpy函数快速且紧凑地完成任务的方法,我正在寻找这种方法。
谢谢!
我认为这是一个相对简单的问题,因为我知道在numpy中有一个简单的答案,但我找不到它了。
我有一个numpy数组,比如[1, 2, 10, 5, 6, 12, 9, 9, 8]
我想从头到尾遍历它,并只保留到目前为止看到的最大值,例如答案将是[1, 2, 10, 10, 10, 12, 12, 12, 12]
用单个循环很容易解决,但是我之前学过一种使用numpy函数快速且紧凑地完成任务的方法,我正在寻找这种方法。
谢谢!
numpy.ufunc.accumulate
函数,来对所有元素应用一个函数(在这个例子中是maximum
),并累积结果:a = np.array([1, 2, 10, 5, 6, 12, 9, 9, 8])
np.maximum.accumulate(a)
# array([ 1, 2, 10, 10, 10, 12, 12, 12, 12], dtype=int32)