Python 将PNG图像文件转换为像素行以保存在dataframe中

Python 将PNG图像文件转换为像素行以保存在dataframe中,python,pandas,numpy,image-processing,Python,Pandas,Numpy,Image Processing,我正在处理一个用于分类的图像数据集。我想将图像的所有像素值存储在数据帧中的一行中。 我可以将图像转换为矩阵,然后再转换为数组,但当我保存此数组时,它会保存在列中 我曾经 img = mpimg.imread(path_for_png) #for getting image data into matrix img = np.ravel(img) #this method for converting it into an array 现在当我应用这个: df = pd.DataFr

我正在处理一个用于分类的图像数据集。我想将图像的所有像素值存储在数据帧中的一行中。 我可以将图像转换为矩阵,然后再转换为数组,但当我保存此数组时,它会保存在列中

我曾经

img = mpimg.imread(path_for_png)  #for getting image data into matrix 
img = np.ravel(img)    #this method for converting it into an array 
现在当我应用这个:

df = pd.DataFrame(img)   #to convert it into dataframe
我得到如下所示格式的数据帧,但我想将其转换为一行,用于一个示例

    0
0   1.0
1   1.0
2   1.0
3   1.0
4   1.0

对图像列表使用
pd.DataFrame
,将每个图像放在单独的行中。因为这里只有一个图像,根据您想要的输出,添加
[]
就足够了

df = pd.DataFrame([img])
将给予

    0   1   2   3   4
0   1.0 1.0 1.0 1.0 1.0

给予


如果数组很长,第二个输出很可能就是您想要的。

您能解释一下我们为什么这样做吗this@SuperUser_15:由于
img
是一个使用
pd.DataFrame(img)
的数字数组,因此默认情况下,它将是一个单列。改为使用
[img]
意味着您的值现在位于二维数组的第一个位置,它将成为数据帧中的一行。您可以尝试添加更多数组,并看到添加了更多行。最后,最后一个是一个三维数组,它将把所有值放在数据帧的(0,0)位置。
df = pd.DataFrame([[img]])
    0
0   [1.0, 1.0, 1.0, 1.0, 1.0]