【发布时间】:2017-11-16 14:22:49
【问题描述】:
我有一个数组a = [1, 2, 3, 4, 5, 6] 和b = [1, 3, 5],我想映射a,这样对于a 中位于b 中的元素之间的每个元素,它都会映射到@ 的索引987654326@ 这是包含a 的上限。不是最好的文字解释,但这里有一个例子
a = 1 -> 0 because a <= first element of b
a = 2 -> 1 because b[0] < 2 <= b[1] and b[1] = 3
a = 3 -> 1
a = 4 -> 2 because b[1] < 4 <= b[2]
所以我想要的最终产品是f(a, b) = [0, 1, 1, 2, 2, 2]
我知道我可以循环并解决它,但我想知道在 pandas/numpy 中是否有一种聪明、快速(矢量化)的方法来做到这一点
【问题讨论】:
-
这些数组总是有序的吗?
-
是的,您可以假设它们是有序的。也可以假设 b 的每个元素都包含在 a 中(没有这个约束的更通用的解决方案会很棒,但我认为它更容易)
标签: python arrays pandas numpy