我正在创建一个包含两列的DataFrame:一个展平的灰度图像和一个标签。
创建数据框后,一切正确,所有图像都有正确的值。然而,当我输出到csv时,它在csv 中将1d图像数组字面写为[0 0 0 ...,0 0 0]。对我做错了什么的想法?
代码大致由以下内容组成:
images=[]
labels=[]
#Run the following in a loop
image = ndimage.imread(image_file, flatten=True)
image.resize((500,500), refcheck=False)
image = np.ndarray.flatten(image)
label = 'xyz'
images.append(image)
labels.append(label)
#After the loop ends create a dataframe and save it
df_images = pd.DataFrame({'image':images, 'label':labels})
df_images.to_csv('labeled_images.csv')
.head()提供以下删节数据:
0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... stemmed
1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... stemmed
2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... stemmed
3 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... stemmed
对数据框上的长度和最大值的测试表明它已正确填充。
编辑:我对如何将其保存到csv很灵活,但我更喜欢一个列保存图像的像素数据,一个列保存图像的正确标签。主要目标是处理图像并将其像素值保存到csv中,这样我每次运行分类器时都不必重新处理和加载。
答案 0 :(得分:0)
您需要将0和1的列表展开到单独的列中,将它们合并到原始数据框中,然后删除列表的原始列:
expanded=pd.concat([df_images['image'].apply(pd.Series), df_images], axis=1)
del expanded['image']
#expanded
# 0 1 2 3 label
#0 0 1 1 0 stemmed
#1 1 0 0 0 stemmed