python-igraph无法保存特征矩阵
准确说,python-igraph无法在赋予attr时候赋予list,只能赋予一个个值,可参考igraph document。但如果一个node的feature就是多维的,就无法将这一attr保存在graph.vs[feature],而需要以字符串形式保存在graph[“node_feature”]
转化为其他格式图
那么要将这个igraph图转为pyg或dgl图的核心就是怎么去读取这段字符串代表的特征矩阵。主要就是反复使用string.split(),并将最终的string循环float得到float list。代码如下:
a="[' 22.000000, 32.941603, 75.110000, 1.700000, 3.405000,188.800000, 6.000000, 11.000000, 5.000000, 9.000000, 5.000000, 8.000000, 9.000000, 4.000000, 9.000000, 6.000000, 11.000000, 5.000000\n', ' 24.000000, 30.484920, 79.090000, -4.430000, 3.513000,221.700000, 9.000000, 9.000000, 6.000000, 11.000000, 8.000000, 5.000000, 6.000000, 7.000000, 11.000000, 8.000000, 10.000000, 6.000000\n']"
b="[' 5.000000, 13.628302, 27.190000, 0.740000, 1.291000, 45.200000, 0.000000, 1.000000, 4.000000, 3.000000, 0.000000, 2.000000, 2.000000, 0.000000, 3.000000, 0.000000, 1.000000, 4.000000\n', ' 5.000000, 13.789760, 24.780000, 3.930000, 1.160000, 35.100000, 0.000000, 2.000000, 3.000000, 1.000000, 2.000000, 2.000000, 4.000000, 0.000000, 1.000000, 0.000000, 2.000000, 3.000000\n', ' 3.000000, 6.680248, 6.550000, -2.050000, 0.288000, 27.800000, 2.000000, 1.000000, 0.000000, 1.000000, 2.000000, 0.000000, 0.000000, 2.000000, 1.000000, 2.000000, 1.000000, 0.000000\n']"
#输出为一个list,list中每个元素也是一个list代表一个node的feature。
def igraph_node_feature2dgl_node_feature(input):
a=input
b = a.split('[')[1]
c = b.split(']')[0