食用指南:本文参考了2020-6-3前的国内外几乎所有论坛的相关bug解决方案
一、bug描述🐛
在做图论的建模的过程中,须要通过无向图判断图的连通性,于是我在参考这篇参考python将列表转换为邻接矩阵文章,程中在jupyerlab中使用用了文中的代码代码片段
A=np.array(nx.adjacency_matrix(G).todense())
出现了如下报错 从图中的关键报错信息
可以得知scipy.sparse的函数下面没有coo_array属性造成的,这是由于scipy在更新的过程,优化了一些函数的接口,使用bing浏览器搜索国内各大网站后无果后,只能跑去Goole上搜了一下,国外对这个bug讨论的比较多,主要是版本的对应问题.
二、解决方案?
1. 确保版本对应
截图参考来源:须要科学上网
然后卸载掉现有的模块,安装新的scipy还有networkx
pip uninstall scipy
pip uninstall networkx
pip install -i http://mirrors.aliyun.com/pypi/simple scipy==1.8 --trusted-host mirrors.aliyun.com
pip install -i http://mirrors.aliyun.com/pypi/simple networkx==2.7 --trusted-host mirrors.aliyun.com
我已开始使用的python版本是使用pycharm中的conda创建的3.8 因为一开始使用的时候,搜索的资料是,networkx最新的模块最高支持py3.8 我的numpy 版本为 1.20.3,最后第一种方案我仍然无法运行这个这个函数。下面换了他一个函数才得以解决。
2.更换函数
使用下面函数,同样可以实现,将图转换为邻接矩阵.
nx.to_numpy_matrix(G)
参考来源:
三、其他碎碎念🤣
这个bug花了我昨晚(2022-6-2)一个晚上,外加今天一上午的时间,严重的延缓了我的编程进度.hhh 至于出现这个类型的问题,我大体我想到的思路有两个, 第一个思路: 可以先试着玄学升级一下模块的版本。 不行的话,就去找网友试验可行或官网指定的匹配版本。 如果还没有,就参考第二个思路,老老实实去官网的文档找帮助的函数吧。 第二个思路: 换一个函数处理。需要找到对应的函数。实现想要实现的效果 总之: 本文试了网上所谓的对应版本不行,换了一个函数才行的。也许是函数更行了?没有深入研究
其他参考文献😎
-
Plot NetworkX Graph with numpy array error -
AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’ -
attributeError:模块’scipy.sparse’没有属性’coo_array’ -
使用networkx画图时,报错:AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’
|