np.array_split дает ValueError: не может скопировать последовательность с размером - - PullRequest
0 голосов
/ 15 октября 2019

В настоящее время я работаю с данными временных рядов и пытался использовать np.array_split для разделения моих данных на пакеты.

Чтобы дать немного больше деталей, у меня изначально был DataFrame, который имеет размер (32000, 149). Я обработал эти данные, чтобы создать над ними скользящее окно размером (100, 40) и использовать его в режиме авторегрессии. Каждый «мини-пакет» имеет 32 экземпляра, каждый из которых имеет размер (100, 40), что приводит меня к 1000 таких так называемых мини-пакетов.

Что я хочу сделать, так это разделить эти 1000 пакетов на «числодней, «что в данном случае будет 10, что означает, что каждая отдельная« дневная партия »будет содержать 100 мини-пакетов соответственно.

У меня следующий код:

data = {}
batches = []
minibatches = []
count = 1

for idx, _ in df.iterrows():
    minibatches.append(df.iloc[idx:(idx + 100), 0:40])
    if count == 32:
        batches.append(minibatches)
        minibatches = []
        count = 0
    count += 1

num_days = len(batches) // 100 # 1000 // 100 = 10
batch_split = np.array_split(batches, num_days)

for day in range(num_days):
    data[fold][day] = batch_split[day] # Nevermind the "fold" variable here.

Ошибка, которую я получаю для строки np.array_split:

ValueError: cannot copy sequence with size 100 to array axis with dimension 40

Если бы я сломал переменную batches, это просто список, содержащий 1000 списков. Эти 1000 списков являются вышеупомянутыми мини-пакетами, а также списками, содержащими 32 кадра данных каждый. Каждый DataFrame из 32 DataFrames имеет размер (100, 40).

. Я не понимаю, откуда взялись size 100 и dimension 40 в этой настройке. Я не обращаюсь к значениям DataFrame, а просто хочу разделить список batches.

1 Ответ

0 голосов
/ 15 октября 2019

Постарайтесь убедиться, что коллекция, которую вы передаете в функцию, является пустым массивом.

batch_split = np.array_split(np.array(batches), num_days)

Мое лучшее предположение при объяснении состоит в том, что вы собираете все в списке, у которого нет атрибута 'shape', он находит атрибут 'shape' на фреймах данных.

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