2017-10-06 53 views
0

我对编程非常陌生,我的教授给了我一点python代码,在第二行到最后一行有一个明确的错误,我不知道该怎么写代码,以便它不会出错?不知道如何使一行代码在python中工作

事我曾尝试:

import numpy as np 
a = np.arange(10) 

b = a[4:8] 
print b 

此返回[3 4 5 6 7]但显然这是错误的。在此之后,我不确定任何其他方式来表达我的教授想要的东西?我曾问她澄清,但没有什么帮助:/

这里是原代码

import numpy as np 
a = np.arange(10) 

b = a[a > 3 & a < 8] 
print b 

任何想法? 谢谢!

+0

3不大于3.这就是为什么你的第一次尝试是不正确的。 –

回答

0

你缺少括号: b = a[(a > 3) & (a < 8)]应该工作。

0

您需要了解Python中operator precedence的性质。该&><更高的优先级,所以原来的表达基本上是评估:

b = a[a > (3 & a) < 8] 

这显然不是你想要的。你想评估a > 3,然后a < 8,然后将它们组合。此外,您期望的范围是3〜7包容性,所以:

b = a[(a >= 3) & (a < 8)] 

还要注意,一些运营商的表现有点不同的numpy的阵列,他们会比标准Python对象。您需要充分利用这一点来了解它,或阅读相关文档。例如:

>>> a > 3 
array([False, False, False, False, True, True, True, True, True, True], dtype=bool) 

因此,这将评估数组中的每个项是否大于3,并返回一个布尔值数组。

相关问题