2016-06-01 12 views
1

Ich möchte eine stückweise Funktion aus Wechselpunkten in Python konstruieren. Ich erwarte, dass meine Ein- und Ausgänge groß sind, also ist Geschwindigkeit wichtig.Konstruieren stückweise Funktion von Wechselpunkten in Numpy

Input:

  • int numpy Array: A = [1,7, 1000, 1500]
  • bool numpy Array: B = [True, False, True, True, False, True, False, False] wobei die Länge A der Anzahl der True gleich in B

Output:

  • int nu mpy Array: C = [1, 1, 7, 1000, 1000, 1500, 1500, 1500] wobei die Länge C ist das gleiche wie die Länge der B

Wesentliches jedes Element A bis zum nächsten True in B wiederholt wird, zeigt in diesem Fall das nächste Element von A aufgebraucht ist.

+0

Bitte schauen Sie sich diese [URL] (http://stackoverflow.com/help) an, um Ihre Qualität zu verbessern –

Antwort

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 berechnet das Element von A für jedes Element des Ausgangssignals zu verwenden, und extrahiert dann A[B.cumsum() - 1] jene Elemente. Sie könnten wahrscheinlich auch einen Weg finden, numpy.repeat dafür zu verwenden.

Verwandte Themen