我想从python中的changepoints构造一个分段函数。我希望我的输入和输出很大,所以速度很重要。
输入:
A = [1,7, 1000, 1500]
B = [True, False, True, True, False, True, False, False]
其中A
的长度等于True
B
的数量
输出:
C = [1, 1, 7, 1000, 1000, 1500, 1500, 1500]
其中C
的长度与B
基本上A
的每个元素都会重复,直到True
中的下一个B
出现,在这种情况下会使用A
的下一个元素。
答案 0 :(得分:0)
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
来执行此操作。