Numpy Array creation causing "ValueError: invalid literal for int() with base 10: 'n'"

Numpy Array creation causing "ValueError: invalid literal for int() with base 10: 'n'"

我正在尝试 运行 来自此 repo https://github.com/jgpavez/LSTM---Stock-prediction 的预测性 RNN。 "python lstm_forex.py"
创建一个空的 Numpy 数组似乎有问题

给我带来问题的函数,从倒数第四行 'days' 开始。

def read_data(path="full_USDJPY.csv", dir="/Users/Computer/stock/LSTM2/",
    max_len=30, valid_portion=0.1, columns=4, up=False, params_file='params.npz',min=False):

    '''
    Reading forex data, daily or minute
    '''
    path = os.path.join(dir, path)

    #data = read_csv(path,delimiter=delimiter)
    data = genfromtxt(path, delimiter=',',skip_header=1)
    # Adding data bu minute
    if min == False:
        date_index = 1
        values_index = 3
        hours = data[:,2]
    else:
        date_index = 0
        values_index = 1

    dates = data[:,date_index]
    print (dates)
    days = numpy.array([datetime.datetime(int(str(date)[0:-2][0:4]),int(str(date)[0:-2][4:6]),
                int(str(date)[0:-2][6:8])).weekday() for date in dates])
    months = numpy.array([datetime.datetime(int(str(date)[0:-2][0:4]),int(str(date)[0:-2][4:6]),
                int(str(date)[0:-2][6:8])).month for date in dates])

报错...

Traceback (most recent call last):  
  File "lstm_forex.py", line 778, in <module>  
tick=tick  
  File "lstm_forex.py", line 560, in train_lstm  
train, valid, test, mean, std = read_data(max_len=n_iter, path=dataset, params_file=params_file,min=(tick=='minute'))  
  File "/Users/Computer/stock/LSTM2/forex.py", line 85, in read_data
int(str(date)[0:-2][6:8])).weekday() for date in dates])  
ValueError: invalid literal for int() with base 10: 'n'  

我见过一个类似的问题,涉及将“.strip”放在某些内容的末尾。这段代码太复杂了,我不知道该放在哪里。我到处都试过了,但在其他人身上通常会遇到同样的错误 'has no attribute'。现在我不确定什么可以解决它。

您正试图在断言中对字符串 'n' 进行 int()。得到同样的错误:

int('n')

ValueError                                Traceback (most recent call last)
<ipython-input-18-35fea8808c96> in <module>()
----> 1 int('n')

ValueError: invalid literal for int() with base 10: 'n'

您究竟想从该列表理解中提取什么?它看起来有点像日期信息的元组,但是关于您尝试提取的内容的更多信息,或者代码中的注释更清楚地解释逻辑将帮助我们找到解决方案。

编辑:如果您使用 pandas.Timestamp,它可能会为您完成所有这些转换 - 现在我查看代码,看起来您只是想抽出星期几,而月。如果它不能为您转换时间戳,它可能不起作用,但它很可能会起作用。您正在使用的 CSV 数据的一小部分样本可以很容易地确认。

days = numpy.array(pandas.Timestamp(date).weekday() for dates in dates]) months = numpy.array(pandas.Timestamp(date).month() for date in dates])