从 Numpy 中的变点构造分段函数

Constructing piecewise function from changepoints in Numpy

我想从 python 中的变点构造一个分段函数。我希望我的输入和输出很大,所以速度很重要。

输入:

输出:

基本上 A 的每个元素都会重复,直到 B 中的下一个 True 出现,在这种情况下,将使用 A 的下一个元素。

In [1]: import numpy

In [2]: A = numpy.array([1, 7, 1000, 1500])

In [3]: B = numpy.array([True, False, True, True, False, True, False, False])

In [4]: A[B.cumsum() - 1]
Out[4]: array([   1,    1,    7, 1000, 1000, 1500, 1500, 1500])

B.cumsum() - 1 计算 A 的哪个元素用于输出的每个元素,然后 A[B.cumsum() - 1] 提取这些元素。您也可以想出一种方法来使用 numpy.repeat 来做到这一点。