如何为已创建的StellarGraph图添加新的节点属性?
为StellarGraph添加新节点属性的方法
StellarGraph没有像NetworkX那样直接给节点追加属性的便捷函数,因为它的节点特征是不可变的,得通过重新构造特征矩阵的方式来实现,具体步骤如下:
提取现有节点特征
假设你的图对象叫g,用g.node_features()可以拿到现有的特征矩阵,g.nodes()能获取节点ID列表,要确保new_feature的顺序和节点ID顺序对应(你这里节点1到4对应[2,3,5,6],顺序没问题)。合并新旧特征
把new_feature转换成和现有特征匹配的二维数组格式,再和原特征拼接:import numpy as np # 获取现有特征 existing_feats = g.node_features() # 把新特征转成列向量 new_feats = np.array([2,3,5,6]).reshape(-1, 1) # 横向拼接得到新的特征矩阵 combined_feats = np.hstack([existing_feats, new_feats])重新构建StellarGraph对象
用合并后的特征重新创建图,同时保留原有的边数据:from stellargraph import StellarGraph # 提取原边数据 edge_data = g.edges() # 重新构造图 updated_graph = StellarGraph(nodes={"default": combined_feats}, edges=edge_data)注意事项
如果你的节点不是按1、2、3、4顺序排列的,一定要先通过list(g.nodes())确认节点ID的顺序,再调整new_feature的对应关系,避免属性错配。
内容的提问来源于stack exchange,提问作者Aks
相关产品推荐
相关产品推荐

