python - 将数组中的低值归零的最快方法?

标签 python arrays floating-point max min

所以,假设我有 100,000 个 float 组,每个数组包含 100 个元素。我需要最大的 X 个值,但前提是它们大于 Y。任何不匹配的元素都应该设置为 0。在 Python 中最快的方法是什么?必须维持秩序。大多数元素已经设置为 0。

样本变量:

array = [.06, .25, 0, .15, .5, 0, 0, 0.04, 0, 0]
highCountX = 3
lowValY = .1

预期结果:

array = [0, .25, 0, .15, .5, 0, 0, 0, 0, 0]

最佳答案

这是 NumPy 的典型工作。 ,这对于这些类型的操作来说非常快:

array_np = numpy.asarray(array)
low_values_flags = array_np < lowValY  # Where values are low
array_np[low_values_flags] = 0  # All low values set to 0

现在,如果您只需要 highCountX 最大的元素,您甚至可以“忘记”小元素(而不是将它们设置为 0 并对其进行排序),而只对大元素列表进行排序:

array_np = numpy.asarray(array)
print numpy.sort(array_np[array_np >= lowValY])[-highCountX:]

当然,如果您只需要几个元素,则对整个数组进行排序可能不是最佳选择。根据您的需要,您可能需要考虑标准 heapq模块。

关于python - 将数组中的低值归零的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1623849/

相关文章:

c - 将递增的整数添加到 char 数组的末尾。 C

c - C语言中 float 的十六进制表示

swift - 转换函数以处理 Double 和 Float...使用 FloatingPoint 类型?

python - 从上一级目录(包)导入模块

python - 具有可迭代工作的 Python for 循环如何工作?

objective-c - 将两个 NSArray 并排排序

arrays - 圆形阵列中的间隔元素

php - 我怎样才能使 php cos 函数返回正确的值?

python - 为什么保存 MSWord 文档会悄无声息地失败?

python - 不使用 for 循环的子数组的点积