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

时间:2016-06-01 22:52:46

标签: python numpy piecewise

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

输入:

  • int numpy array:A = [1,7, 1000, 1500]
  • bool numpy数组:B = [True, False, True, True, False, True, False, False]其中A的长度等于True
  • B的数量

输出:

  • int numpy array:C = [1, 1, 7, 1000, 1000, 1500, 1500, 1500]其中C的长度与B
  • 的长度相同

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

1 个答案:

答案 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来执行此操作。