2016-02-18 23 views
0

我遇到以下问题。认为差异小于0.0001,病情并不令人满意。我遇到了abs(beta - beta1).any()的问题。python中的条件不满意

alpha = -29.18835001947976 
    prev_alpha = -29.188337321421681 
    beta = np.matrix([[-0.26220145],[ 8.37991712]]) 
    beta1 = np.matrix([[-0.26220149],[ 8.37991514]]) 
    print(alpha - prev_alpha) 
    print (beta - beta1) 
    epsilon = 0.0001 
    if ((abs(alpha - prev_alpha) <= epsilon) & (abs(beta - beta1).any() <= epsilon)): 
     print 'x' 


    print (-1.26980580788e-05 <= 0.001) 
True 
    print (abs(beta - beta1).all() <0.001) 
False 

由于条件不满足,条件不起作用。我想知道做什么可以做'x'印刷。如果矩阵中的所有值都与前一个值几乎相同,我想进入条件。如果相同,则需要打印'x'。我以0.0001作为条件来确定它几乎相同。任何人都可以帮助我解决这个问题。

更新:

print (any(beta - beta1) <0.001) 
False 

print(alpha - prev_alpha) 
print (beta - beta1) 

-1.26980580788e-05 
[[ 4.00000000e-08] 
[ 1.98000000e-06]] 
+0

这个条件是否满足? '(abs(alpha - prev_alpha)<= epsilon)' –

+0

是的,这就是为什么我保持条件检查。它是真实的 – haimen

+2

您是否有意使用'&'运算符而不是''和'运算符? – mgilson

回答

4

abs(beta - beta1).any()是一个布尔值。如果为真,则与1相同,总是大于epsilon。

你想要的可能更像any(difference < epsilon)

+0

我的价值观在任何时候都不会相同。在某些地方,一些小数点会有所不同。所以只有我的条件为0.0001。我们可以做任何事情来检查条件并进入循环。 – haimen

+0

@ haimen我认为'any'是错误的,我编辑了我的答案。 – JulienD

+0

但我仍然得到相同的输出。我将更新问题 – haimen