如何在二维数组中正确赋值?

我正在尝试为图中节点的每个子集分配一个热编码。下面是我正在尝试的代码


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]


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.]]

任何帮助都感激不尽


哔哔one
浏览 55回答 1
1回答

小唯快跑啊

如果我明白你想要做什么,我认为你需要稍微调整你的代码。您当前正在打印每个循环并将每个循环的 prob_vec 重置为 0。我认为你想做更多这样的事情:import networkx as nximport numpy as npgraph=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]=1print(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.]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python