python – 最快的方法来清零数组中的低值?

所以,让我说我有100,000个浮点数组,每个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_indices = array_np < lowValY  # Where values are low
array_np[low_values_indices] = 0  # All low values set to 0

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

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

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

http://stackoverflow.com/questions/1623849/fastest-way-to-zero-out-low-values-in-array

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 最快的方法来清零数组中的低值?