Python добавляет 2 многомерных массива NumPy - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь собрать / объединить несколько numpy массивов в одном массиве.Я могу сделать это с pandas фреймом данных как:

df_train = pd.DataFrame()
... loop ...:
    df_temp = pd.read_json(file)
    df_train = pd.concat([df_train, df_temp], ignore_index=True, axis=0, sort=False) 

в цикле.Благодаря этому я могу комбинировать различные данные в одном фрейме данных.

То, что я хочу сделать, это с массивными массивами.Я попытался сделать то же самое, что и:

nump_train = np.nan
... loop ...:
    nump = df_temp.values
    nump_train = np.concatenate((nump_train, nump))

, но я не могу объединить нульмерные массивы, как говорится в сообщении об ошибке (ValueError: нульмерные массивы нельзя объединять)

Как я могу это сделатьэто как в пандах?

ps: я могу решить это с плохо написанным жестко закодированным кодом как:

w=1
for loop:
    if w == 1:
        nump1 = sc.transform(df_temp.drop(['time'], axis=1))
    elif w == 2:
        nump2 = sc.transform(df_temp.drop(['time','trend'], axis=1))
    elif w == 3:
        nump3 = sc.transform(df_temp.drop(['time'], axis=1))
    w += 1
X_train = np.concatenate((nump1, nump2, nump3), axis = 0)

Bu это плохое кодирование, и я не могу масштабировать это в цикле.

РЕДАКТИРОВАТЬ 1:

Фактический код такой:

w = 1

for i in range(1, loop_size+1):

    df_train = pd.DataFrame()
    nump_train = np.nan

    random_list = random.sample(file_list, selection)

    for json in random_list:
        json_name = json[:json.index('_')]
        df_temp = pd.read_json(filedir + json)

        train_period_mask = (df_temp['time'] > train_start_date) & (df_temp['time'] < train_end_date)

        df_temp = df_temp.loc[train_period_mask]
        df_temp.index = np.arange(0, len(df_temp))


        df_temp = calc_(df_temp)
        df_temp['trend'] = zg(df_temp, zg_ratio)
        df_temp['trend_shifted'] = df_temp.trend.shift(-1)
        df_temp = df_temp.dropna()

        nump = sc.fit_transform(df_temp.drop(['time','trend_shifted','trend'], axis=1))

        if w == 1:
            nump1 = sc.transform(df_temp.drop(['time','trend_shifted','trend'], axis=1))
        elif w == 2:
            nump2 = sc.transform(df_temp.drop(['time','trend_shifted','trend'], axis=1))
        elif w == 3:
            nump3 = sc.transform(df_temp.drop(['time_period_start','trend_shifted','trend'], axis=1))

        df_train = pd.concat([df_train, df_temp], ignore_index=True, axis=0, sort=False)
        nump_train.append(nump)
        w += 1

    drop_list = ['time_period_start']
    df_train.drop(drop_list, 1, inplace = True )


    start = timeit.default_timer()
    sc = MinMaxScaler()
    X_train = sc.fit_transform(df_train.drop(['trend','trend_shifted'], axis=1))
    X_train2 = np.concatenate((nump1, nump2, nump3), axis = 0)
    y_train = df_train['trend_shifted'].values

Я хочу, чтобы X_train и X_train2 имели одинаковую форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...