冰可乐超好喝 2022-05-02 18:12 采纳率: 75%
浏览 57
已结题

python运行所有代码都第一行报错

显示如图,改如何解决

Traceback (most recent call last):
  File "C:\Users\thinkpad\Desktop\Feature_Cal.py", line 5, in <module>
    import numpy as np
  File "C:\python3.9\lib\site-packages\numpy\__init__.py", line 147, in <module>
    from . import lib
ImportError: cannot import name 'lib' from partially initialized module 'numpy' (most likely due to a circular import) (C:\python3.9\lib\site-packages\numpy\__init__.py)

  • 写回答

1条回答 默认 最新

  • A Python 萌新花花 2022-05-02 23:22
    关注

    解决办法:
    1,拆解成多个文件,将要互相引用的分开
    2,缩小导入的范围,如一般情况下import在文件顶部,这时候可以将import移动到紧挨需要导入的代码上方即可;
    3. 把这个py文件改个名字,最好长一点,以防万一跟库里面的文件重名
    4. 修改为:from xx import *

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    A Python 萌新花花 2022-05-02 23:22

    求采纳

    回复
    冰可乐超好喝 回复 A Python 萌新花花 2022-05-03 03:19

    
    
    
    ```)
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    
    ##最传统的灰色模型
    import numpy as np
    class Grey_model(object):
        def __init__(self,input_value):
            #初始化过程,先建立好变量空间,即累加序列,背景值序列,B和Y矩阵,拟合序列,预测值序列等。
            self.input_value=input_value
            self.accumulation_value=np.zeros(len(input_value))
            self.background_value=np.zeros(len(input_value)-1)
            self.y_matrix_value=np.mat(np.zeros((len(input_value)-1,1)))
            self.b_matrix_value=np.mat(np.ones((len(input_value)-1,2)))
            self.accumulation()
        #计算累加序列
        def accumulation(self):
            for i in range(len(self.input_value)):
                self.accumulation_value[i]=np.sum(self.input_value[0:i+1])
    
        #计算Z值
        def background_values(self):
            for i in range(len(self.accumulation_value)-1):
                self.background_value[i]=(self.accumulation_value[i]+self.accumulation_value[i+1])/2
    
        #计算B矩阵
        def b_matrix(self):
            self.background_values()
            for i in range (self.b_matrix_value.shape[0]):
                self.b_matrix_value[i,0]=-self.background_value[i]
    
        #计算Y矩阵
        def y_matrix(self):
            for i in range(self.y_matrix_value.shape[0]):
                self.y_matrix_value[i]=self.accumulation_value[i+1]-self.accumulation_value[i]
    
        #计算参数矩阵U:U=(B^T*Y)^-1*B^T*Y
        def u_matrix(self):
            self.y_matrix()
            self.b_matrix()
            self.u_matrix_values=(self.b_matrix_value.T*self.b_matrix_value)**-1 * self.b_matrix_value.T * self.y_matrix_value
            #下面把矩阵格式转化为数组格式,再转化为列表格式
            self.u_matrix_array=np.array(self.u_matrix_values.T)[0]
            self.u_matrix_value=self.u_matrix_array.tolist()
    
        #计算预测值
        def predict(self,number_of_forecast):
            self.u_matrix()
            self.predicted_accumulation_value=[]
            #使用了float("%.2f"% 来调整输出值的小数的个数
            self.predicted_value=[float("%.2f"%(self.input_value[0]))]
            for i in range(len(self.input_value)+int(number_of_forecast)):
                self.predicted_accumulation_value.append(((self.accumulation_value[0]-self.u_matrix_value[1]/self.u_matrix_value[0]
                    )*np.exp(-self.u_matrix_value[0]*(i)))+self.u_matrix_value[1]/self.u_matrix_value[0])
                    #上式中e^-at,由于python中从0开始算,故t减去1
            for i in range(len(self.predicted_accumulation_value)-1):
                self.predicted_value.append(float("%.2f"%(self.predicted_accumulation_value[i+1]-self.predicted_accumulation_value[i])))
        
        #计算误差
        def test_error(self):
            MAPE_list=[]
            for i in range(len(self.input_value)):
                MAPE_list.append(abs((self.predicted_value[i]-self.input_value[i])/self.input_value[i]))
            self.MAPE=str(100*(np.mean(MAPE_list[1:])))[:5]+ '%'
    
    #下面是个测试实验,input_value是输入序列,预测的个数为3.
    if __name__ == '__main__':
        input_value=[29.2,33.9,39.7,46.8,56.1,69.5,80.7,87.5,107.5]
        number_of_forecast=3
        A=Grey_model(input_value)
        A.predict(number_of_forecast)
        A.test_error()
        print('预测值')
        print(A.predicted_value)
        print('\nMAPE值')
        print(A.MAPE)
    

    还是不太行,我运行的是直接复制的代码,可以帮我看看这个代码有什么问题吗,谢谢啦

    回复
    冰可乐超好喝 回复 A Python 萌新花花 2022-05-03 03:20

    前四行忽略一下,不小心输错了

    回复
    展开全部15条评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月3日
  • 创建了问题 5月2日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部