首页 > 解决方案 > 如何合并具有不同标题的多个csv文件?

问题描述

我有一些图像数据集,我想使用 np.savetxt 将它们转换为 CSV 文件,但我找不到任何方法将它们组合成一个 csv 文件。当我将数据集向量与“np.array”组合时,在此处输入图像描述它是这样的。当我尝试合并多个 csv 文件时,即使它们具有不同的标题名称,它们也会组合在相同的标题中,但我不想要它。反正有没有将它们组合起来,或者只是通过 np.savetxt 将它们保存为一个文件?(顺便说一句,我真的很抱歉我的英语和我的问题,我是 stackoverflow 的新手)

例如,我有这两个 csv 文件(在此处输入图像描述,在此处输入图像描述)并且我想要这样的内容在此处输入图像描述(但对于多个文件,这里是我的代码

while x!=y:
    img=Image.open(f"0_resized/{x}.jpg").convert("L")
    arr = np.array(img)
    shape = arr.shape
    flat_arr = arr.ravel()
    np.savetxt(f"{x}.csv",flat_arr,fmt="%d")
    x+=1

标签: pythonnumpy

解决方案


我们可以创建一个包含图像的列表并将其保存到一个 .csv 文件中,而不是创建多个 .csv 文件并将它们组合起来。为此,我们可以对您的代码进行一些小修改,如下所示:

list_arrays = []

while x!=y:
  img=Image.open(f"0_resized/{x}.jpg").convert("L")
  arr = np.array(img)
  shape = arr.shape
  flat_arr = arr.ravel().tolist()
  list_arrays.append(flat_arr)
    
  x+=1
    
final_arrays = np.asarray(list_arrays)
np.savetxt("images.csv", final_arrays.T, delimiter=",")

在上面的代码中,我们创建了一个名为list_arrays的列表,我们在其中保存了在 while 循环中创建的平面数组。在读取所有图像并将它们的平面版本保存在我们的列表中之后,我们可以使用 np.asarray 方法将其转换为数组。

这里的关键是保存的不是数组,而是转置后的数组(final_arrays.T),它将每个图像放在一个列中。


推荐阅读