Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从图像文件列表创建数据帧_Python_Pandas - Fatal编程技术网

Python 从图像文件列表创建数据帧

Python 从图像文件列表创建数据帧,python,pandas,Python,Pandas,我正在尝试从图像文件列表.png文件创建熊猫数据框 samples = [] img = misc.imread('a.png') X = img.reshape(-1, 3) samples.append(X) 我在如下示例中添加了多个.png文件。然后,我尝试从中创建一个熊猫数据帧 df = pd.DataFrame(samples) 它正在抛出错误值错误:必须通过二维输入。这里怎么了?是否真的可以将图像文件列表转换为数据帧。我对熊猫是全新的,所以如果这看起来很傻,请不要介意。 例如。

我正在尝试从图像文件列表.png文件创建熊猫数据框

samples = []
img = misc.imread('a.png')
X = img.reshape(-1, 3)
samples.append(X)
我在如下示例中添加了多个.png文件。然后,我尝试从中创建一个熊猫数据帧

df = pd.DataFrame(samples)
它正在抛出错误值错误:必须通过二维输入。这里怎么了?是否真的可以将图像文件列表转换为数据帧。我对熊猫是全新的,所以如果这看起来很傻,请不要介意。 例如。 X=[[1,2,3,4],[2,3,4,5]]df=pd.DataFrameX
按照预期的第2行第4列,为示例2提供了一个很好的数据帧,但在图像文件中不会出现这种情况

如果要从列表创建数据帧,最简单的方法是创建pandas.Series,如以下示例所示:

import pandas as pd

samples = ['a','b','c']
s = pd.Series(samples)
print s
输出:

0 a 1b 2 c

您可以使用:

df = pd.DataFrame.from_records(samples)
所以X是一个二维数组,由像素的大小和数量组成,3,这使得样本成为一个三维列表,由图像的大小和数量组成,像素的数量和数量组成。因此,您得到的错误ValueError:Must pass 2-d input是合法的

您可能想要的是:

X = img.flatten() 

这两种方法中的任意一种都会给出X的大小,像素数,像素数,以及图像的大小,像素数,像素数

您可能会特别注意确保所有图像具有相同数量的像素和通道

您可以使用重塑-1

x.append((img[::2,::2]/255.0).reshape(-1)) 
df = pd.DataFrame(x)

DataFrame需要一个数组作为输入,不是吗,不是一个列表?你接下来想对来自图像的数据做什么?我需要在上面实现Isomap,然后需要从中创建一个2d散点图,但我没有说到这一点。另外请看我问题的最后一部分,我编辑了它。图像是二维数据。数据帧是二维的。如果您想要一个三维数据的图像数组,那么您可以使用一个面板,或者数据帧的Python列表,但不能使用单个数据帧。或者,我认为您可以将图像对象存储在一维序列中,但我不确定这会有什么帮助。您希望数据框的形状是什么?请参阅我问题的最后一部分,我对其进行了编辑。这将创建一个序列,而不是数据框。
X = img.reshape(-1)
x.append((img[::2,::2]/255.0).reshape(-1)) 
df = pd.DataFrame(x)