错误:TypeError:无法使用灵活类型执行归约

时间:2019-07-29 04:35:20

标签: python-3.x numpy

我使用的是python 3.7版,下面是我沿行执行操作的代码。我想要沿行的数据平均值,但出现错误。我是numpy和python的新手。我正在从文本文件中读取数据。 我的代码是:

import numpy as np

def getIndexFromDatetime(date_from, date_to):
    '''date_from = [2, 10] : 10oclock of day2
    '''
    if date_from[1] > 24 or date_to[1] > 24: print('error')
    start = (date_from[0] - 1) * 48 + date_from[1] * 2
    end = (date_to[0] - 1) * 48 + date_to[1] * 2
    return [start, end]

def is_num(s):
    return s.replace(',', '').replace('.', '').replace('-', '').isnumeric()

def get_dataset(fpath):

    with open(fpath, 'r') as f:
        cnt = 0
        DataWeather = {}
        header = []
        dtime = []
        temp1 = []
        temp2 = []
        for line in f:
            terms = line.split('\t')
            #print(terms)

            if cnt == 0: header1 = terms
            if cnt == 1: header2 = terms

            #header.append(terms[3])
            cnt += 1
            if cnt == 2:
                for i in range(len(header1)):
                    header.append(header1[i]+header2[i])
                #print(header)
                for i in range(len(terms)):
                    DataWeather[header[i]] = []
                    #break

            if cnt > 2:
                for i in range(len(terms)):
                    if is_num(terms[i]):
                        DataWeather[header[i]].append(float(terms[i]))
                    else:
                        DataWeather[header[i]].append(terms[i])

        for i in range(len(DataWeather[header[0]])):
            dtime.append(DataWeather[header[0]][i]+' '+DataWeather[header[1]][i])

        return DataWeather, header


def get_data(dataset, header, idx):

    y = dataset[header][idx[0]:idx[1]]
    return y




data_dir = 'weather_data'
month = 3
day = list(range(1,10))
header_idx = [2,3,4,5,7,16]
for d in day:
    print(d)
    dtime_from = [d, 9]
    dtime_to = [d, 18]   
    dtime_idx = getIndexFromDatetime(dtime_from, dtime_to)
    fpath = '{0}/2019-{1:02}.txt'.format(data_dir, month)
    dataset, header = get_dataset(fpath)
    for h in header_idx:
        print(fpath)
        print(header[h], dtime_from, dtime_to, dtime_idx)
        data = get_data(dataset, header[h], dtime_idx)
        #data= list(map(float,np.array(data)))
        #data = map(np.array(data, dtype=np.float))
        print(data)
        print(np.mean(data))

我遇到以下错误:

ret = umr_sum(arr, axis, dtype, out, keepdims)

TypeError: cannot perform reduce with flexible type

我还尝试了代码中注释的“ map”和“ list”之类的一些功能,但仍会产生将字符串转换为浮点数的错误。

0 个答案:

没有答案