Ошибка при проверке цели: ожидается, что плотность_2 будет иметь форму (45, 20), но получен массив с формой (45, 1) - PullRequest
0 голосов
/ 03 марта 2020

У меня есть массив данных формы (2000,45), и мне нужно преобразовать его в (2000,45,20). Каждые 45 столбцов содержат список из 20 элементов. Пожалуйста, помогите мне с этим. Набор данных выглядит следующим образом - введите описание изображения здесь

1 Ответ

0 голосов
/ 03 марта 2020

Прежде чем я начну, в вашем вопросе есть исправление: «Каждая ячейка в вашем фрейме данных представляет собой список из 20 элементов»

import pandas as pd
import numpy as np

df = pd.DataFrame({0: [[2, 3, 4], [1,2,3], [4, 5,6]], 1: [[2, 3, 4], [1,2,3], 
[4, 5,6]]})

def itemExploder(df):
    df = df.to_numpy()
    dim1, dim2, dim3 = len(df), len(df[0]), len(df[0][0])
    df2 = np.zeros((dim1, dim2, dim3), dtype=int)
    for r in range(dim1):
        for c in range(dim2):
            for i,item in enumerate(df[r][c]):
                df2[r][c][i] = item
    print(df2.shape)
    return df2

newDf = itemExploder(df)

Эта функция предполагает, что у вас одинаковое количество элементов (20) в каждой ячейке.

...