如何重塑数据框的每一行?

时间:2019-05-05 16:36:28

标签: python pandas image numpy dataframe

我有一个数据帧,其中每一行对应于图像的1024个像素值。我想将每一行重塑为32x32图像。我的数据框的形状是(32495,1024)。

我尝试过:

features.iloc[0].values.reshape(32, 32)

但是,这仅适用于单行。像这样对整个数据框执行此操作:

features.values.reshape(32, 32)

导致以下错误:

ValueError: cannot reshape array of size 33274880 into shape (32,32)

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:0)

您需要传递必须重塑的行数,如下所示:

my_df = pd.DataFrame(np.zeros((32495,1024)))
my_df.shape
>> (32495, 1024)

reshaped_array = my_df.values.reshape(32495, 32, 32)
reshaped_array.shape
>> (32495, 32, 32)

答案 1 :(得分:0)

您可以从DataFrame中获取例如numpy数组,但是问题是您无法使用第3级numpy数组来馈送DataFrame。

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(10, 9))
arr = df.values
arr = np.reshape(arr, (10, 3, 3))

此步骤将失败:

df = pd.DataFrame(arr)

另一个答案在最后提供了numpy数组,而不是DataFrame。