Python 从图像文件列表创建数据帧
我正在尝试从图像文件列表.png文件创建熊猫数据框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) 它正在抛出错误值错误:必须通过二维输入。这里怎么了?是否真的可以将图像文件列表转换为数据帧。我对熊猫是全新的,所以如果这看起来很傻,请不要介意。 例如。
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)