首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用append将循环中的计算值放入数组

如何使用append将循环中的计算值放入数组
EN

Stack Overflow用户
提问于 2019-10-11 11:21:44
回答 1查看 27关注 0票数 0

我正在解决一个问题,我的最终目标是获得进动数组中的进度值。这些值是时间对θ图的斜率。我使用线性拟合来获得该图的斜率。我尝试使用append将该斜率放入数组中。这是在一个针对不同值的函数中完成的。

但是进动值的数组的长度是131,它应该只有24。当代码运行时,代码正在为每个a值打印正确的斜率(也称为进差值),但是数组太长了,我不知道所有这些值都来自哪里。

我怀疑这就是我使用追加/将斜率值放入空数组中的方式。如何才能在数组中获得所需的值?

基本上,我想在我的函数中创建一个不同斜率的图形数组。当我使用append的时候,数组的斜率值(params)是131,而它应该是24,并且其中的值都是错误的。如何创建斜率数组,即此函数运行的每个值的斜率?

代码语言:javascript
复制
    amin=0
    amax=0.024
    da=0.001
    a_list=np.arange(amin,amax,da)


    for a in a_list:
        mercury(a)    

        ##finding dtheat/dt 
        precession =[]
        #plot theta vs time

        Theta = [theta]

        Time = [time]
        #dtheta/dt dt=period



        #Fitting a straight line! 
        def linefit(x,m,b):
            return m*x+b
        params, param_cov = optimize.curve_fit(linefit,Time,Theta)
        plt.plot(a_list,params[0]*a_list+params[1],'--r',linewidth=2,label='fit')
        plt.plot(Time,Theta)
        plt.xlabel('Time')
        plt.ylabel('Theta')
        plt.title("time vs theta when alpha = {a}".format(a=a))
        plt.show()
        print('slope is %.3f' % (params[0]))  
        precession.append(params[0])

    plt.plot(a_list, precession)
    plt.show()
EN

回答 1

Stack Overflow用户

发布于 2019-10-11 11:26:45

你每次循环都会重置列表。我把它移出了循环。

已编辑:已创建新数组以包含用于分隔值的参数...

代码语言:javascript
复制
amin=0
amax=0.024
da=0.001
a_list=np.arange(amin,amax,da)

precession =[] # ADDED HERE
new_array = [] # ADDED HERE
for a in a_list:
    mercury(a)    

    ##finding dtheat/dt 

    #plot theta vs time

    Theta = [theta]

    Time = [time]
    #dtheta/dt dt=period
    for i in theta:
       precession.append(i/0.246)


    #Fitting a straight line! 
    def linefit(x,m,b):
        return m*x+b
    params, param_cov = optimize.curve_fit(linefit,Time,Theta)
    plt.plot(a_list,params[0]*a_list+params[1],'--r',linewidth=2,label='fit')
    plt.plot(Time,Theta)
    plt.xlabel('Time')
    plt.ylabel('Theta')
    plt.title("time vs theta when alpha = {a}".format(a=a))
    plt.show()
    print('slope is %.3f' % (params[0]))  
    new_array.append(params[0]) # ADDED HERE

plt.plot(a_list, precession)
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58333793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档