食用指南:本文参考了2021-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
至于出现这个类型的问题,我大体我想到的思路有两个,
第一个思路
可以先试着玄学升级一下模块的版本。
不行的话,就去找网友试验可行或官网指定的匹配版本。
如果还没有,就参考第二个思路,老老实实去官网的文档找帮助的函数吧。
第二个思路
换一个函数处理。需要找到对应的函数。实现想要实现的效果
在这里插入图片描述
总之: 本文试了网上所谓的对应版本不行,换了一个函数才行的。也许是函数更行了?没有深入研究


其他参考文献😎

  1. Plot NetworkX Graph with numpy array error

  2. AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’

  3. attributeError:模块’scipy.sparse’没有属性’coo_array’

  4. 使用networkx画图时,报错:AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐