若图中含有节点1包含属性:name、price,节点2包含属性:name,lat,将如何将图形转换成邻接矩阵和特征矩阵代码
时间: 2024-03-05 07:52:10 浏览: 98
将图形转换成邻接矩阵和特征矩阵的代码如下所示:
```
import networkx as nx
import numpy as np
# 创建图
G = nx.Graph()
G.add_node(1, name="Node1", price=100)
G.add_node(2, name="Node2", lat=30)
# 获取节点列表
nodes = list(G.nodes())
# 构建邻接矩阵
adjacency_matrix = np.zeros((len(nodes), len(nodes)))
for i, node1 in enumerate(nodes):
for j, node2 in enumerate(nodes):
if G.has_edge(node1, node2):
adjacency_matrix[i][j] = 1
# 构建特征矩阵
feature_matrix = np.zeros((len(nodes), 3))
for i, node in enumerate(nodes):
node_attrs = G.nodes[node]
feature_matrix[i][0] = node_attrs.get("name", 0)
feature_matrix[i][1] = node_attrs.get("price", 0)
feature_matrix[i][2] = node_attrs.get("lat", 0)
print("邻接矩阵:\n", adjacency_matrix)
print("特征矩阵:\n", feature_matrix)
```
其中,邻接矩阵记录了节点之间的连接关系,特征矩阵记录了节点的特征信息。在特征矩阵中,我们使用 0 表示节点不含有某个属性。需要注意的是,邻接矩阵和特征矩阵的维度要与节点数量相同。
阅读全文