1. 文件读写
①rb –  读取二进制文件,r – 读取文本文件	②.pkl是python保存文件的一种文件格式,如果直接打开会显示一堆序列化的东西,需要使用r	b类型来打开。
 	③with open('data.txt' + 'dataset.pkl', 'rb') as f 读取文件
 	④mat  数据格式是Matlab的数据存储的标准格式
 				 loadmat() 读取.mat文件 
 						eg: import scipy.io as scio  
 							dataFile = 'E://data.mat'  
 							data = scio.loadmat(dataFile)
 							print data['A'] //找到mat文件中的A矩阵
 	 loadtxt() numpy中的函数 读取数据文件,这里的数据文件要求每一行数据的格式相同
  1. pass: 不做任何事情,一般用做占位语句。
  2. dtype: 数据类型
  3. set() 创建一个无序不重复元素集,可删除重复数据
  4. list() 用于将元组转换为列表,将()转为[]
  5. shuffle() 将序列的所有元素随机排序 eg:import random random.shuffle(list)
  6. dump() 将对象obj保存到文件file中去 eg:import pickle pickle.dump(obj, file) pickle.HIGHEST_PROTOCOL 这是一个整数,表示最高可用的协议版本 eg:pickle.dump(train_set, f, pickle.HIGHEST_PROTOCOL)
  7. DataFrame() 数据统计(例如excel) 是一个表格型的数据结构 eg:import pandas as pd pd.DataFrame(list, columns = [‘uid’, ‘iid’, ‘label’])
  8. str.format() 格式化字符串 eg:print(‘Train samples: {}, Valid samples: {}’.format(len(train_set), len(valid_set)))
  9. sort_values() axis=0/1 行/列,ascending=True/False 升序/降序,by=’’ 按照哪一列或者行排序 eg:train_df = train_df.sort_values(axis = 0, ascending = True, by = ‘uid’)
  10. range() 创建一个整数列表 range(start, stop, step) 包含start不包含stop
  11. tqdm(iterator) Python进度条 在Python长循环中添加一个进度提示信息 eg:for u in tqdm(range(user_count + 1))
  12. toList() 将数组/矩阵转换为列表 eg:hist[‘iid’].tolist()
  13. os.path.dirname(path) 去掉文件名,返回目录
  14. Dataset 是一个包装类,用来将数据包装为Dataset类
    DataLoader 传入Dataset,
    pytorch中加载数据的顺序是:
    ①创建一个dataset对象
    ②创建一个dataloader对象
    ③循环dataloader对象,将data,label拿到模型中去训练
    dataset 需要自己定义一个class,里面至少包含3个函数:
    ①__init__:传入数据
    ②__len__:返回这个数据集一共有多少个item
    ③__getitem__:返回一条训练数据,并将其转换成tensor
    dataloader 参数
    dataset:传入的数据
    shuffle = True:是否打乱数据
    collate_fn:使用这个参数可以自己操作每个batch的数据
  15. nn.MSELoss() MSE均方损失函数 pytorch的nn.MSELoss损失函数,eg: from torch import nn nn.MSELoss()
  16. StepLR() 学习率调整策略 StepLR(optimizer, step_size, gamma) 在step_size个epoch后衰减为 学习率 * gamma(学习率衰减速率)
  17. time.time() 返回当前时间的时间戳
  18. enumerate() 枚举,用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标
  19. optimizer.zero_grad() 把梯度置零,也就是把loss关于weight的导数变成0.
  20. model.train() 模型变为训练模式 启用BatchNormalization 和 Dropout
    model.eval() 模型变为评估模式 不启用BatchNormalization 和 Dropout
  21. with 是python中上下文管理器,比如文件的写入(需要打开关闭文件)等。
  22. with torch.no_grad() 强制之后的内容不进行计算图构建。
在使用pytorch时,并不是所有的操作都需要进行计算图的生成(计算过程的构建,以便梯度反向传播等操作)。
	而对于tensor的计算操作,默认是要进行计算图的构建的,在这种情况下,可以使用 with torch.no_grad()。
  1. extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
  2. mean() 函数功能:求取均值
  3. unsqueeze() 增加一个维度
  4. backward() pytorch损失函数backward进行反向传播梯度的计算
  5. step() 这个方法会更新所有的参数
  6. nn.Linear() pytorch 设置网络中的全连接层 eg:nn.Linear(input_dim, output_dim) 参数:输入张量,输出张量
  7. nn.Sequential pytorch中,是一个Sequential容器,模块将按照构造函数中传递的顺序添加到模块中。
  8. tensor.expand_as() 这个函数就是把一个tensor变成和函数括号内一样形状的tensor
  9. queeze()
queeze():去除size为1的维度,包括行和列。当维度大于等于2时,squeeze()无作用。
#         其中squeeze(0)代表若第一维度值为1则去除第一维度,squeeze(1)代表若第二维度值为1则去除第二维度。
unsqueeze() 函数功能:与squeeze()函数功能相反,用于添加维度。
  1. view() 功能和reshape()功能相似,其中-1代表随意
  2. time strptime()
time strptime() 根据指定的格式把一个时间字符串解析为时间元组 
				eg:time.strptime(curdate[:19], '%Y-%m-%dT%H:%M:%S') 
time.mktime()  它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数
				eg:time.mktime(time.strptime(curdate[:19], '%Y-%m-%dT%H:%M:%S'))
  1. eval()
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
eg:lam = eval("[0.1,0.001]")     将字符串型转换为list型数据。
  1. assert()
用于判断一个表达式,在表达式条件为 false 的时候触发异常。
eg:assert len(lam) == 2 如果lam的长度不为2,直接报错
  1. os.getcwd() 用于返回当前工作目录
  2. os.path.join():连接两个或更多的路径名
eg:os.path.join(os.getcwd(), "History", "yelp")
输出为D:\WorkSpace\PythonWorkSpace\KCGN-master\History\yelp
  1. pickle.load()
反序列化对象,将文件中的数据解析为一个python对象。file中有read()接口和readline()接口
	pickle.load(file)
  1. with
效果类似于try-catch
比如:文件使用后自动关闭/线程中锁的自动获取和释放等
with open(self.datasetDir + '/multi_item_adj.pkl', 'rb') as fs:
    multi_adj_time = pickle.load(fs)
  1. Numpty astype
df.astype('数据类型')                        #改变整个df的数据类型
df['列名'].astype('数据类型')              #仅改变某一列的数据类型
  1. Numpty shape
快速读取矩阵的形状,第一维长度,第二维长度
eg:self.userNum, self.itemNum = trainMat.shape
		a.shape[0] 读取第一维长度
		a.shape[1] 读取第二维长度
  1. Numpty nnz
.nnz 矩阵非零元素的数量
eg:log("uu num = %d"%(uuMat.nnz))
  1. Numpty nonzero
nonzero(a),返回不为0的索引,a若为二维数组,则返回两行array(),第一行为不为0的行索引,第二行为不为0的列索引
	eg:uuMat_edge_src, uuMat_edge_dst = uuMat.nonzero()
	eg:print(len(a.nonzero()[0]))            # 非零元素的个数
			print(a[a.nonzero()])                 # 非零元素的值
  1. networkx Graph
import networkx as nx
nx.Graph() 创建一个空的无向图
nx.Graph(mat)  根据邻接矩阵创建无向图
  1. networkx connected_components
nx.connected_components(graph)   或者连通分支,即子图
subGraphList = list(nx.connected_components(graph))  得到连通的子图列表
  1. for循环
# 生成一个长度为node_num,值全部为-1的node_subGraph数组
node_subGraph = [-1 for i in range(node_num)]
  1. dok_matrix
dok_matrix(m, n) 创建一个m*n的稀疏矩阵
  1. Numpty sum
sum(a) 默认为对输入参数中的所有元素进行求和