以下是我拥有的一个函数的简化版本:
def create_edge(a,b,network=G):
weight = calculate_weight(matrix[a],matrix[b])
network.addedge(array[a],array[b], weight = weight)
基本上,它采用两个矩阵行索引,计算两行之间的权重,然后将其添加为两个节点之间的边的权重。你知道吗
我的目标是在数组中的每一对组合上执行这个函数。我的意思是,如果我有这样一个数组:
array = np.array(['A','B','C','D'])
要执行这些功能:
create_edge('A','B')
create_edge('A','C')
create_edge('A','D')
create_edge('B','C')
create_edge('B','D')
create_edge('C','D')
我的阵型很大!它包含大约15000个元素。这意味着它非常慢。我想知道有没有快速的方法?你知道吗
到目前为止,我尝试了:
防止XYproblem。我可能应该注意到,我不一定需要它是成对的组合,因为B->;A和A->;B是相同的,我只是收集到这样做后会更快:
def create_network(network):
for i in range(len(array)):
for j in range(len(array)):
create_edge(i,j,network)
我也试过这个:
comb = list(itertools.combinations(array,2))
def create_network(network):
for i in range(len(comb)):
create_edge(comb[i][0],comb[i][1], network)
两个案子都太慢了。我知道这可能是由于我的数组的大小,但我相信有一个更快/更有效/更好的方法来做到这一点。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐