数组仅填充最后一个值

时间:2014-06-10 16:04:12

标签: python arrays loops

我的数组问题只是用计算出的值填充最后一个空格。我的代码如下:

c_volume = 4.45e-5                                                              
c_flow_rate = 1.67e-6                                                           

acr = c_flow_rate/c_volume

t1 = [3600.0,18000.0, 36000.0]
air_conc_t1 = [6.42404968e+02, 2.74977722e+02, 1.45282562e+02]


t2 = [7200.0, 21600.0, 39600.0]
air_conc_t2 = [4.53346985e+02, 2.41359268e+02, 1.28038071e+02]

===============================================================

n_calc = np.zeros((len(t1),1), dtype='f') 

def n(t1, air_conc_t1, t2, air_conc_t2):
    return (1/(t2-t1))*(np.log(air_conc_t1/air_conc_t2))                        

for i in range(len(t1)):
    n_calc[i] = n(t1[i], air_conc_t1[i], t2[i], air_conc_t2[i])

===============================================================

calc_f1 = np.zeros((len(t1),1), dtype='f')
calc_f2 = np.zeros((len(t1),1), dtype='f')
calc_N = np.zeros((len(t1),1), dtype='f')

def f1(acr, n_calc):
    return (acr+n_calc)/n_calc                                                    

calc_f1[i] = f1(acr, n_calc[i])

def f2(acr, n_calc):
    return (acr-n_calc)/n_calc                                                  

calc_f2[i] = f2(acr, n_calc[i])

def N(R, calc_root, m_thickness, calc_f1, calc_f2):
    return (2*R*np.tan(calc_root*m_thickness))/(calc_root*m_thickness*
        (calc_f1+calc_f2*calc_root*m_thickness*((1/np.tan(calc_root\
        *m_thickness))+np.tan(calc_root*m_thickness))))

for i in xrange(len(t1)):
    calc_N[i] = N(R, calc_root[i], m_thickness, calc_f1[i], calc_f2[i])         

print calc_f1
print calc_f2
print calc_N

我正在打印以下内容:

[[    0.        ]
 [    0.        ]
 [ 1070.23657227]]
[[    0.       ]
 [    0.       ]
 [ 1068.2364502]]
[[             inf]
 [             inf]
 [  3.55326119e-06]]

我不确定为什么数组的前两个值没有被填充,但最后一个是。我已经手工计算了它们并获得了价值。

我对编程非常陌生,所以任何帮助都会受到赞赏。

谢谢,

沙恩

2 个答案:

答案 0 :(得分:1)

您对f1和f2的调用不在循环中。请注意,同一级别的缩进中的所有内容都包含在循环中。

试试这个:

for i in xrange(len(t1)):
    calc_f1[i] = f1(acr, n_calc[i])
    calc_f2[i] = f2(acr, n_calc[i])
    calc_N[i] = N(R, calc_root[i], m_thickness, calc_f1[i], calc_f2[i])         

print calc_f1
print calc_f2
print calc_N

答案 1 :(得分:1)

calc_f1[i] = f1(acr, n_calc[i])

calc_f2[i] = f2(acr, n_calc[i])

在任何for循环之外(可能只是缩进问题)。