python - 如何使用追加将循环中的计算值放入数组中
问题描述
我正在解决一个问题,我的最终目标是获取岁差数组中的岁差值。这些值是时间与 theta 图的斜率。我使用线性拟合来获得该图的斜率。我尝试使用 append 将该斜率放入数组中。这是为不同的 a 值完成的函数。
但是进动值的数组的长度为 131,它应该只有 24。当代码运行时,代码正在为每个值打印正确的斜率(也就是进动值),但是数组太长了,而且我不知道所有这些价值观是从哪里来的。
我怀疑这是我使用追加/将斜率值放入空数组的方式。我该怎么做才能在数组中获取我需要的值?
基本上我想制作一个在我的函数中创建的图表的不同斜率的数组。当我使用追加时,斜率值(params [0])数组的长度为131,当它应该是24时,其中的值都是错误的。我如何制作斜率数组,每个函数运行的值的斜率?
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()
解决方案
您在每个循环中都重置列表。我把它移到了循环之外。
已编辑:创建新数组以包含参数 [0] 以分隔值...
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()
推荐阅读
- javascript - 使用javascript的多选过滤器
- excel - VBA,当单元格值不等于字符串时构建if-then
- excel - 来自 Outlook 的前 50 封电子邮件(从新到旧)
- sap-web-ide - 保存js文件时可以将prettier插件集成到Web IDE中吗?
- sql - 关于 SQL Pivot
- powershell - 从 xml 中填充条件中的变量
- python - 在熊猫中计算每个日期员工的总工作时间
- powershell - 使用 Powershell compare_object 添加过滤器
- web - 在不打开浏览器的情况下执行 php 脚本
- python-3.x - 在python中的csv文件行上实现插入排序