pytorch在读取数据时一次性生成csv文件(多栏目)

pytorch在读取数据时一次性生成csv文件(多栏目)

读取图片数据时,通常会遇到数据写入到csv文件,而数据写入文件时,写入csv文件需要导入pandas库

首先设置一个空列表用来放置每次读取的图片路径,通过os.listdir("路径名")可以获取到该文件下面所有路径,如果是涉及到图片分类的问题,比如说是10个类别的数据,只需要在循环中设置一个空列表。

如何设置对的正确的数组
枚举设置多维列表

info_array  = [[],[],[]]

使用列表生成式生成多维列表

info_array  = [[] for i in range(N)]

使用乘法生成列表

info_array  = [[]] * N

三种方式生成的结果打印出来是一致的
但是第三种生成方式,使用[i]append函数的时候,是每一个[]都会append上去函数,我们希望每一个[]都是独立存在的。
前面两种方式生成列表,使用[i]append函数的时候,是第i[]会append上去函数,我们希望每一个[]都是独立存在的。

附上读取数据的代码:

import os
import torchvision
from torchvision import transforms
from torch.utils.data import DataLoader,Dataset
from torchvision.io import read_image
import torch
import torchvision
import numpy as np
from PIL import Image
import pandas as pd

#设置csv文件的列名
col = ['img1','img2','GT']
# col = ['img1']

#使用os.listdir()遍历整个文件夹

dataset_dir = "data/train"
N = len(os.listdir(dataset_dir + '/' + 'img1' + '/'))
#存储内容信息
info_array  = [[] for i in range(N)]#三维数组,分别是img1,img2,GT

#读取文件夹下面的多个类别
classes = os.listdir(dataset_dir)
# print("image classes length:",len(classes))

for kindname in classes:
    #获取每个类别文件夹的路径
    index = 0
    if(kindname.startswith('.')):
        print("pass .DStore file")
    else:
        classpath = dataset_dir + '/' + kindname
        for filename in os.listdir(classpath):
            #读取每一个类的文件夹中的每一个图片文件的路径信息
            filepath = classpath + '/' + filename
            #将label的字符串标签转化为数字标签
            # label = classes.index(kindname)
            # print(index,end=' ')
            info_array[index].append(filepath)
            # print()
            index += 1
    # print()
    # print(np.array(info_array[1]))
# print(np.array(info_array).shape)
# print(np.array(info_array))
df = pd.DataFrame(info_array,columns=col)
df.to_csv('./dataset.csv',encoding='UTF-8',index=None)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45527999/article/details/128892511