【发布时间】:2018-06-30 06:10:40
【问题描述】:
给定一个阈值alpha 和一个numpy 数组a,有多种可能找到第一个索引i 使得arr[i] > alpha;见Numpy first occurrence of value greater than existing value:
numpy.searchsorted(a, alpha)+1
numpy.argmax(a > alpha)
在我的例子中,alpha 可以是标量或任意形状的数组。我想要一个函数get_lowest 在这两种情况下都有效:
alpha = 1.12
arr = numpy.array([0.0, 1.1, 1.2, 3.0])
get_lowest(arr, alpha) # 2
alpha = numpy.array(1.12, -0.5, 2.7])
arr = numpy.array([0.0, 1.1, 1.2, 3.0])
get_lowest(arr, alpha) # [2, 0, 3]
有什么提示吗?
【问题讨论】:
-
澄清一下:
arr始终是 1d 且已排序?你独立对待alpha的元素?arr和alpha的相对大小是多少?对alpha的简单迭代可能是最快的,尤其是当searchsorted是单个值的最佳工具时。 -
@hpaulj
alpha可以是任意形状的数组,通常比arr大得多。 -
我想起了一个
padding问题- 可变长度列表。 @Divakar 的解决方案风格可能很有用,stackoverflow.com/questions/43924187/…
标签: python arrays numpy vectorization