如何从数据集中删除图像及其标签

时间:2019-07-17 18:47:50

标签: python-3.x

当我导入具有相应标签的图像和csv文件的数据集时,我做了一个提取每个图像标签的功能。但是,我必须删除一些不符合特定条件的图像。有没有办法删除相应的标签?

这是用于加载图像和标签的功能

def imp_img():

    dirname = '/s/desk/img/'
    x = np.zeros((1000, 100, 100), dtype=np.float32) 

    for i in range(x.shape[0]):
        img    = Image.open(dirname + 'img_%02d.png' % (i)) 
        img    = np.array(img)
        x[i] = img


    path = '/s/desk/labels_classificatio.csv'    
    labels = pd.read_csv(path, usecols=["category"],
                       sep=";" )
    y = np.array(labels)

    return x, y

这是它们的导入方式

x, y = imp_img()
x = x/255.0
y = y.reshape(y.shape[0], 1)
x.shape, y.shape

现在我进行了for循环,以去除太暗的图像

c =[]
for i in x: 
    if np.sum(i) >= 100:
        c.append(i)
c = np.asarray(c) 

现在的问题是,我的图像少于标签。有没有办法删除相应的标签?

1 个答案:

答案 0 :(得分:0)

您正在寻找for i in x。它使您可以循环遍历可迭代对象,同时保持计数。代替for i, img in enumerate(x),我们将执行i,它使我们维护循环计数器c = [] c_labels = [] for i, img in enumerate(x): if np.sum(img) >= 100: c.append(img) c_labels.append(y[i]) c = np.asarray(c) c_labels = np.asarray(c_labels) 。这样,您可以取消与符合您条件的图像相对应的标签。

代码:

cmake