已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘complex‘

小明 2025-05-02 09:43:17 5

文章目录

  • 引言
  • 报错分析
    • 解决方案1:降低NumPy版本
    • 解决方案2:更改NumPy源码
    • ���尾

      引言

      在Python编程的世界里,NumPy无疑占据着举足轻重的地位,它承担着处理大规模数值计算的重要任务。然而,与所有强大工具一样,NumPy在使用过程中也可能会遇到一些挑战。一个常见的错误提示就是“AttributeError: module ‘numpy’ has no attribute ‘complex’”。这个错误信息通常意味着在代码中尝试访问NumPy库中的complex属性时出现了问题。

      报错分析

      报错截图如下:

      从报错信息来看,当前版本的NumPy库已经没有complex属性,因此可行的解决方案是降低numpy版本。

      解决方案1:降低NumPy版本

      当前NumPy版本如下图所示:

      可以看到,当前环境的NumPy版本为1.25.0(通过pip list命令查看),我们需要卸载当前较新的NumPy版本,安装较老的NumPy版本。示例代码如下:

      # 1. 卸载当前numpy库
      pip uninstall numpy
      # 2. 较老的NumPy版本
      pip install numpy==1.21.6 -i https://pypi.tuna.tsinghua.edu.cn/simple
      

      虽然这种方法能够解NumPy库中没有complex属性的燃眉之急,但可能会出现新的报错 ----> 由于其它第三方库(比如opencv)需要适配一定范围内的NumPy版本 ⇒ 为了一个bug而卸载当前的NumPy库可能会出现更多的报错,因为新安装的numpy库不一定支持其它第三方库。

      解决方案2:更改NumPy源码

      我们可以通过报错提示找到出错源码的具体位置,通过修改源码来解决问题。从报错信息可以看出,问题出在下图的绿色框所示的代码行。

      我们将此代码行进行修改,具体如下所示:

      # wn_freqs_mul = np.zeros(treal.shape, dtype=np.complex) # 修改前
      wn_freqs_mul = np.zeros(treal.shape, dtype=np.complex_) # 修改后
      

      我们只需要把np.complex修改成np.complex_即可在不更换numpy版本的前提下解决numpy库没有 'complex’属性的问题。

      参考链接

      结尾

      亲爱的读者,首先感谢您抽出宝贵的时间来阅读我们的博客。我们真诚地欢迎您留下评论和意见,因为这对我们来说意义非凡。

      俗话说,当局者迷,旁观者清。您的客观视角对于我们发现博文的不足、提升内容质量起着不可替代的作用。

      如果您觉得我们的博文给您带来了启发,那么,希望您能为我们点个免费的赞/关注,您的支持和鼓励是我们持续创作的动力。

      请放心,我们会持续努力创作,并不断优化博文质量,只为给您带来更佳的阅读体验。

      再次感谢您的阅读,愿我们共同成长,共享智慧的果实!

The End
微信