python - 如何在python中使用for循环和数组来计算错误传播
问题描述
我正在尝试编写一个 for 循环来使用导数方法计算误差线。该公式相对简单,但是我的代码中似乎遇到了向量/数组大小方面的错误。我的代码中有很多已定义的向量,我检查了所有向量的长度。for 循环的所有输入都是 1x25 大小的数组。
我尝试将 for 循环中的索引从 range(1,25) 更改为 range(0,24) 但这似乎不起作用。
# Creating vectors
dfdvg = np.zeros(25)
dfdxi0 = np.zeros(25)
sigsquare = np.zeros(25)
vgerr = vrs
xi0err = xi0s
Asq = np.zeros(25)
Bsq= np.zeros(25)
sig = np.zeros(25)
# calculating derivatives and error vectors
for i in range(0,24):
dfdvg[i] = (np.multiply(rms[:,i],delta[:,i]))**-1
dfdxi0[i] = -vr[:,i]/(vr[:,i]*(np.power(delta[:,i],2)))
Asq[i] = np.power(np.multiply(dfdvg[i],vgerr[i]),2)
Bsq[i] = np.power(np.multiply(dfdxi0[i],xi0err[i]),2)
sigsquare[i] = Asq[i] + Bsq[i]
sig[i] = np.power(sigsquare[i],0.5)
q = np.power(np.multiply(rms,delta),-1)
left = np.multiply(vg,q)
right = -(beta*H)/(3*(1+zeff))
我想要的是“sig”向量,代表每个索引的传播错误。
解决方案
问题不在于数组的尺寸,而在于形状。不幸的是,您没有编写所有数组。关键是,如果您可以只使用数组 (25) 而不是 (1, 25),那么一切正常:
vrs = np.random.rand(25)
vr = np.random.rand(25)
xi0s = np.random.rand(25)
rms = np.random.rand(25)
delta = np.random.rand(25)
vg = np.random.rand(25)
# Creating vectors
dfdvg = np.zeros(25)
dfdxi0 = np.zeros(25)
sigsquare = np.zeros(25)
vgerr = vrs
xi0err = xi0s
Asq = np.zeros(25)
Bsq= np.zeros(25)
sig = np.zeros(25)
# calculating derivatives and error vectors
for i in range(0,24):
dfdvg[i] = (np.multiply(rms[i],delta[i]))**-1
dfdxi0[i] = -vr[i]/(vr[i]*(np.power(delta[i],2)))
Asq[i] = np.power(np.multiply(dfdvg[i],vgerr[i]),2)
Bsq[i] = np.power(np.multiply(dfdxi0[i],xi0err[i]),2)
sigsquare[i] = Asq[i] + Bsq[i]
sig[i] = np.power(sigsquare[i],0.5)
q = np.power(np.multiply(rms,delta),-1)
left = np.multiply(vg,q)
(你的最后一行代码似乎无关)
所以,在我看来,你最好的选择是重塑你的数组:
vrs=vrs.reshape(25)
推荐阅读
- arrays - 类型错误:未定义不是函数('...props.items.map...'附近)
- excel - 使用 Excel VBA 将 Outlook 电子邮件从收件箱移动到基于主题行的存档子文件夹 (Outlook 365 - Microsoft Exchange)
- javascript - 如何更改第三方 React 组件的颜色?
- javascript - 无法理解使用递归方法调用函数时如何从数组中获取某个值
- android - 如何打开一个按摩锥的 html 页面(file:///android_assets/html/1%20html ERR_FILE_NOT_FOUND)
- amazon-web-services - 是否有任何东西将 AWS::ElasticBeanstalk::Environment 链接到它创建的嵌套堆栈?
- c# - 将字符串解析为键值对C#
- python - 从python列表中的每个项目中删除单引号
- c++ - GStreamer GError to boost::system::error_code?
- python - 文本文件到python中的字典