Python 常见函数
参考:
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之间的随机数