2016-08-07 5 views
0

Ich habe folgende Zeilen Code funktionieren gut, wenn die Eingänge in der Konsole gegeben:Benutzereingaben in Python geben float, Array Multiplikation Problem

import numpy as np 
def simple_exponential_smoothing(actuals, n_forecast_periods,alpha): 
    return np.array([np.array([alpha*((1-alpha)**k)*actuals[len(actuals)-k-1] for k in range (len(actuals))]).sum()]*n_forecast_periods) 
simple_exponential_smoothing(actuals, n_forecast_periods,alpha) 

Aber es funktioniert nicht, wenn try gleiche Benutzereingaben in Code zu erhalten selbst:

import numpy as np 
actuals = [] 
actuals = input("Input list:") 
n_forecast_periods = int(input("Int:")) 
alpha = float(input("float:")) 
def simple_exponential_smoothing(actuals, n_forecast_periods,alpha): 
    return np.array([np.array([alpha*((1-alpha)**k)*actuals[len(actuals)-k-1] for k in range (len(actuals))]).sum()]*n_forecast_periods) 
simple_exponential_smoothing(actuals, n_forecast_periods,alpha) 

Entschuldigen Sie, wenn das keine gute Frage ist. Ich bin neu in Python.

Ich habe bereits versucht, Kartenfunktion für Multiplikation zu verwenden; zu komplex für mich, um es im folgenden Setup zu verwenden.

+0

Sie sagen "Es funktioniert nicht". Was funktioniert nicht? Erhalten Sie eine Fehlermeldung? Wenn ja, welche? – physicalattraction

+0

Das erste 'actuals = []' tut nichts für Sie. – hpaulj

Antwort

0

Zuerst müssen Sie die Eingabe in eine Liste von ganzen Zahlen (oder Schwimmer) konvertieren:

actuals = input("Input list:") 
actuals = [int(i) for i in actuals.split(',')] 

nahm ich an den Eingängen werden durch Komma getrennt.

Zum Beispiel

Input list:1, 2, 5, 7, 10 
Int:2 
float:0.3 
[ 5.48283 5.48283] 

Sie vielleicht einen Blick auf pandas.ewma nehmen wollen, auch.

+0

Danke, Ayhan! Es funktionierte. actuals = [] actuals = Eingabe ("Historie der Zeitreihe (Input List):") actuals = [float (i) für i in actuals.split (',')] – Bhushan