glob.glob() 函数
获取文件目录下符合条件的所有文件:
dataset_path = glob.glob('data/*.npy')
例:获取 'data' 目录下的所有 '.npy' 文件
# generate_data()
dataset_path = glob.glob('data/*.npy')
input_data = np.load(file = dataset_path[3])
print(len(dataset_path))
print(input_data)
dataset_path 默认将所有 '.npy' 文件按照 '*' 的字典序排序,并可以用下标的方式来访问第 $i$ 个元素。
len(dataset_path) 就是文件个数
CSV 文件的读写
CSV 文件以逗号隔开
直接将矩阵转为 CSV 文件:
datas = []
for i in range(20):
datas.append(('data/' + str(i) + '.npy', i % 2))
frame = pd.DataFrame(datas)
frame.to_csv("annotations.csv", index=False)
可以定义每一列的列名
data_path = []
data_tag = []
for i in range(20):
data_path.append('data/' + str(i) + '.npy')
data_tag.append(i % 2)
frame = pd.DataFrame({'data_path':data_path, 'data_tag': data_tag})
frame.to_csv("annotations.csv", index=False, sep = ',')
一行一行地写入 csv 数据 (删除多余空格)
后面代码为读入 csv 文件并输出每一行
with open('annotations', 'w', newline='') as f:
writer = csv.writer(f)
for i in range(20):
file_path = 'data/' + str(i) + '.npy'
row = [file_path, i % 2]
writer.writerow(row)
with open('annotations') as f:
f_csv = csv.reader(f)
for row in f_csv:
print(row)
os.path.join()
路径拼接函数。
os.path.join('aaaa','/bbbb','ccccc.txt')
从后向前数如果出现 '/' 则前面的部分则不会显示
输出结果:
%s
与 c++ 中 printf("%s", x) 用法类似,都是用 %s 代指后面的变量。
output = '233123'
print('%sA' % output)
输出结果:
Pandas
在处理数据时,很多时候数据是以 .csv 的形式存储的,这就要求学会用 Pandas 库来处理这些数据。
csv 形式中,两个数据是通过逗号隔开的。
pandas.read_csv
括号里面放 csv 文件的路径,就可以读取 csv 文件了。
该函数读取的数据类型为 Dataframe , 有许多可选的参数
1. header:
正常读取 csv 文件的话默认第一行是列名,而很多时候是没有列名的,即第一行就是数据。
此时可以令 header=None,即第一行开始就是数据。
2. names
names 会直接加到 csv 文件的第一行,即列名。
如果已经有列名的话先前的列名会被算作元素放到数据的第一行。
pandas.DataFrame
可以直接把不包含列名的 csv 矩阵扔里面,然后会自动生成数据部分的 csv 文件。
如果想要定义列名的话就用 pandas.columns = [] 来定义。
pandas.get_dummies()
对于每一列元素,若全是数值则按照数值存储。
对于每一列元素,若全是名字则按照 one-hot 表示。
随机数
python 自带的 random 类
random.randint(n,m) #生成一个n到m之间的随机数
random.random() #生成一个0到1之间的浮点数
random.uniform(n,m) #生成一个n到m之间的浮点数
random.choice([]) #从列表之间随机选取一个数
numpy 生成随机数
np.random.rand()#产生N维的均匀分布的随机数
np.random.randn()#产生n维的正态分布的随机数
np.random.randint(n,m,k)#产生n--m之间的k个整数
np.random.random()#产生n个0--1之间的随机数