我对编程非常陌生,我的教授给了我一些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 :(得分:0)
你缺少括号:
b = a[(a > 3) & (a < 8)]
应该有效。
答案 1 :(得分: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)
因此,这将评估数组中的每个项目是否为&gt; 3,并返回一个布尔值数组。