需求
从一个几千张的图片库里抽出前200张图片,如下图:
![](https://img-blog.csdnimg.cn/img_convert/48f38799d4bb00aca11d528949402362.png)
共有6696张图片
![](https://img-blog.csdnimg.cn/img_convert/57a5a5591a2fd23fe375e2ebf088c1ec.png)
从中抽出前200张图片
现在有图片库6696张图片降维到二维空间后的坐标点,如下图:
![](https://img-blog.csdnimg.cn/img_convert/14e9cf8457f89243178ff1a21acc3f79.png)
该文件坐标点的顺序是按内存读取图片的顺序来排序的
想从中提取出前200张图片的坐标点,并保存为csv文件
思路
内存读取这200张图片的顺序,与人看到的图片顺序,是不一致的
通过 os.listdir() 读取这200张图片,即为内存读取的顺序,并将读取的图片id依次append到列表中
提取出所有图片的坐标点文件中图片id列,并转成list
根据200张图片的id,从所有图片的坐标点文件的图片id列的list中依次提取出坐标点,依次append到列表中
根据3中得到的列表,从原文件中取出对应行 & 所有列,并保存为csv文件
代码
import os
import pandas as pd
import numpy as np
imgs_root = r"C:\Users\11842\Desktop\200张图片"
id = []
for i in os.listdir(imgs_root):
id.append(i)
# print(id)
path = r"D:\Jupyter Notebook\Experiment\t-SNE-2D.csv"
df = pd.read_csv(path)
# print(df['图像路径'])
all = df['图像路径']
all = all.tolist()
# print(all)
idx = []
for i in id:
idx.append(all.index(i))
# print(idx)
print(df.iloc[idx,:])
df.iloc[idx,:].to_csv(r"C:\Users\11842\Desktop\200tsne.csv")