1.1 list 转 numpy
ndarray = np.array(list)
1.2 numpy 转 list
list = ndarray.tolist()
2.1 list 转 torch.Tensor
tensor=torch.Tensor(list)
2.2 torch.Tensor 转 list
先转numpy,后转list
list = tensor.numpy().tolist()
3.1 torch.Tensor 转 numpy
ndarray = tensor.numpy()
*gpu上的tensor不能直接转为numpy
ndarray = tensor.cpu().numpy()
3.2 numpy 转 torch.Tensor
tensor = torch.from_numpy(ndarray)
4.1 numpy 转 DataFrame
df = pandas.DataFrame(numpy)
4.2 DataFrame 转 numpy
ndarray = np.array(df) 也可以 ndarray = df.to_numpy()
5.1 pyg dataset[0]/data 转 networkx
from torch_geometric.utils import to_networkx
g_nx = to_networkx(data, to_undirected=True)
5.2 networkx 转 pyg data
G = nx.Graph()
edgelist = [(0,1),(0,2),(0,3),(1,3)]
G.add_edges_from(edgelist)
x = torch.eye(G.number_of_nodes(), dtype=torch.float) # x是节点特征矩阵,这里设为单位矩阵。
adj = nx.to_scipy_sparse_matrix(G).tocoo() # adj是图G的邻接矩阵的稀疏表示,左边节点对代表一条边,右边是边的值,adj是对称矩阵。
# row是adj中非零元素所在的行索引
row = torch.from_numpy(adj.row.astype(np.int64)).to(torch.long)
# col是adj中非零元素所在的列索引。
col = torch.from_numpy(adj.col.astype(np.int64)).to(torch.long)
# 将行和列进行拼接,shape变为[2, num_edges], 包含两个列表,第一个是row, 第二个是col
edge_index = torch.stack([row, col], dim=0)
y = torch.tensor([partition[i] for i in range(G.number_of_nodes())
train_mask = torch.zeros(y.size(0), dtype=torch.bool)
data = Data(x=x, edge_index=edge_index, y=y, train_mask=train_mask)
写文件函数to_csv详细:
简单版本:df.to_csv("文件名", header=0, index=0, sep=",")
DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True,
index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"',
line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True,
escapechar=None, decimal='.')
参数解释:
path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json
sep : 输出文件的字段分隔符,默认为 “,”
na_rep : 用于替换空数据的字符串,默认为''
float_format : 设置浮点数的格式(几位小数点)
columns : 要写的列
header : 是否保存列名,默认为 True ,保存
index : 是否保存索引,默认为 True ,保存
index_label : 索引的列标签名
先写文件然后读出自己写的内容,代码如下:
a = [[1,2,3,5,4],[6,7,8,9,10]]
a = torch.Tensor(a)
df = pd.DataFrame(a.cpu().numpy())
// 最后文件内容中索引号,即行号要去掉,列号/列名应该保留
df.to_csv("test_out.csv", index=0)
df = pd.read_csv("test_out.csv")
End...