Wie kann ich effizient von einem Array von im Wesentlichen Etiketten zu Gleichungen entsprechend diesen Bezeichnungen in Python 2.7 bewegen?Verschieben von einem Array von 'Etiketten' zu Array von Gleichungen entsprechend diesen Bezeichnungen in Python 2.7
Dieses Bild zeigt, was ich meine:
Die Gleichungen ziehen Werte von Array x, so "xn" in dem Bild in Python Bedingungen würden x [n] sein. Als ein Beispiel ist der 0. Eintrag in der Etikettenanordnung "a", was der Gleichung 1 + xn entspricht, die 1 + x [0] wäre. Der nächste ist "b", was x [1] * 2 ist.
Es gibt viele Möglichkeiten, dies zu erreichen, aber ich möchte mich auf Effizienz konzentrieren. Die tatsächlichen Arrays haben Tausende von Elementen, und diese Operation wird tausende Male ausgeführt (jeder Zeitschritt in meinem Modell). Das x-Array wird bei jedem Zeitschritt anders sein. Was ich eigentlich mache, ist, die Diagonalen für eine tridiagonale Matrix basierend auf verschiedenen Randbedingungen zu erstellen.
Kann mir jemand einen besseren Einblick geben, als jedes Mal mit einem Schaltergehäuse durch das gesamte Array zu iterieren? Hier
ist ein Beispiel für mich ist es eine Brute Art und Weise tun:
'''
Equations corresponding to various labels
a -> 2+x[n]
b -> 3*x[n-1]+2x[n]
c -> 4*x[n]
These are just dummy equations I am making up for the example
'''
x = [4,7,6,6,9,12,4,9,1,11]
labelArray = ['a','b','b','b','c','c','a','b','b','c']
outputArray = []
n = 0
for label in labelArray:
if label == 'a':
output = 2+x[n]
elif label == 'b':
output = 3*x[n-1]+2*x[n]
elif label == 'c':
output = 4*x[n]
outputArray.append(output)
n += 1
print outputArray
# outputArray = [6, 26, 33, 30, 36, 48, 6, 30, 29, 44]
Wenn Sie sich über die Zeiteffizienz sprechen, denken Sie an die Nutzung von 'dict' – woozyking