我正在尝试为图中节点的每个子集分配一个热编码。下面是我正在尝试的代码import networkx as nximport numpy as npgraph=nx.karate_club_graph()nodes=list(graph.nodes())n=graph.number_of_nodes()subset_nodes=[1,2]for v in subset_nodes: y=nodes.index(v) prob_vec=np.zeros((n,n)) prob_vec[0][y]=1 print(prob_vec)我得到这个结果[0. 1. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]][[0. 0. 1. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]]I expect a matrix, with the subset nodes rows contains one hot encoding(1 value for each node in the subset node and others being zeros) like below:[0. 1. 0. ... 0. 0. 0.] [0.0 . 1. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]]任何帮助都感激不尽
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
如果我明白你想要做什么,我认为你需要稍微调整你的代码。您当前正在打印每个循环并将每个循环的 prob_vec 重置为 0。我认为你想做更多这样的事情:
import networkx as nx
import numpy as np
graph=nx.karate_club_graph()
nodes=list(graph.nodes())
n=graph.number_of_nodes()
subset_nodes=[1,2]
prob_vec=np.zeros((n,n))
for v in range(n):
y = nodes.index(v)
if y in subset_nodes:
prob_vec[v][y]=1
print(prob_vec)
这输出:
[[0. 0. 0. ... 0. 0. 0.]
[0. 1. 0. ... 0. 0. 0.]
[0. 0. 1. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]
添加回答
举报
0/150
提交
取消