2016-06-01 3 views
1

pythonのチェンジポイントから区分的な関数を作りたいと思っています。私は入力と出力が大きくなることを期待しているので、スピードは重要です。Numpyのチェンジポイントからpiecewise関数を作成する

入力:

  • INT numpyの配列:A = [1,7, 1000, 1500]
  • ブールnumpyの配列:

    Aの長さがB

出力のTrueの数に等しいB = [True, False, True, True, False, True, False, False]

  • int nu MPY配列:C = [1, 1, 7, 1000, 1000, 1500, 1500, 1500]Cの長さは、本質的にAの各要素はBに次Trueまで繰り返されるB

の長さと同じである場合にAの次の要素が使用されて現れます。

+0

この[URL](http://stackoverflow.com/help)を見ると、品質を向上させることができます –

答えて

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を使用する方法を試すこともできます。

関連する問題