当前位置: 首页 > 面试题库 >

运行numpy数组值的最大值

慕容耘豪
2023-03-14
问题内容

我需要一种快速的方法来保持运行最大的numpy数组。例如,如果我的数组是:

x = numpy.array([11,12,13,20,19,18,17,18,23,21])

我想要:

numpy.array([11,12,13,20,20,20,20,20,23,23])

显然我可以做一个小循环:

def running_max(x):
    result = [x[0]]
    for val in x:
        if val > result[-1]:
            result.append(val)
        else:
            result.append(result[-1])
    return result

但是我的数组有成千上万的条目,我需要多次调用。似乎必须要有一个小技巧才能删除循环,但我似乎找不到任何有效的方法。另一种选择是将其编写为C扩展,但似乎我会重新发明轮子。


问题答案:

numpy.maximum.accumulate 为我工作。

>>> import numpy
>>> numpy.maximum.accumulate(numpy.array([11,12,13,20,19,18,17,18,23,21]))
array([11, 12, 13, 20, 20, 20, 20, 20, 23, 23])


 类似资料:
  • 问题内容: 我想创建一个数组,其中包含通过给定numpy数组移动的窗口的所有es。很抱歉,这听起来令人困惑。我举一个例子。输入: 我的窗口宽度为5的输出应为: 每个数字应为输入数组宽度5的子数组的最大值: 我没有在numpy中找到一个开箱即用的函数来做到这一点(但是如果有一个,我不会感到惊讶;我并不是一直以numpy开发人员的想法来思考)。我考虑过为输入创建偏移的2D版本: 然后,我可以对此进行申

  • 问题内容: 你能否建议使用中的模块函数在一维numpy数组中找到局部最大值/最小值?显然,最简单的方法是看一下最近的邻居,但我希望有一个被接受的解决方案,它是发行版的一部分。 问题答案: 如果你要查找一维数组中所有小于其邻居的条目,则可以尝试 你还可以在使用此步骤之前使数组平滑。 我认为没有专用的功能。

  • 问题 你需要找出数组中包含的最大的值。 解决方案 你可以使用 JavaScript 实现,在列表推导基础上使用 Math.max(): Math.max [12, 32, 11, 67, 1, 3]... # => 67 另一种方法,在 ECMAScript 5 中,可以使用 Array 的 reduce 方法,它与旧的 JavaScript 实现兼容。 # ECMAScript 5 [12,

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。

  • 这是一个非常基本的算法(不能再简单了),但我被难住了。我们有一个元素数组,我们必须确定最小值和最大值。 通常的方法是遍历数组,找出最小值和最大值,即2n比较。 稍微有效的方法是首先对数组的连续元素进行比较,以确定任意两个元素的最大值和最小值(N/2比较)。我们现在有n/2 min和n/2 max元素。现在我们可以在n/2+n/2+n/2(前一步)=3/2*n或1.5n中得到最终的max和min 那