如何解决将生成器数组转换为列表
我使用以下方法从 networkx 图中计算了所有最短路径:
def steps (node1,node2):
return nx.all_shortest_paths(G0,node1,node2)
np.vectorize(steps)(df['source'],df['target'])
结果是:
array([<generator object _build_paths_from_predecessors at 0x7f10b14a4550>,<generator object _build_paths_from_predecessors at 0x7f10b14a40d0>,<generator object _build_paths_from_predecessors at 0x7f10b14a46d0>,<generator object _build_paths_from_predecessors at 0x7f10b14a4750>,<generator object _build_paths_from_predecessors at 0x7f10b14a47d0>],dtype=object)
但我想要节点列表。
解决方法
试试这个:
def steps (node1,node2):
return list(nx.all_shortest_paths(G0,node1,node2))
从 all_shortest_paths
的文档中可以明显看出此函数返回一个生成器,因此使用 list
您可以使用生成器,从中提取所有对象。
此外,我认为你应该修改:
np.vectorize(steps)(df['source'],df['target'])
添加输出的类型,如np.vectorize
documentation中所述:
np.vectorize(steps,otypes=[object])(df['source'],df['target'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。