还是一句一句来分析吧
第一句
vector = numpy.array([5, 10, 15, 20])
用numpy生成一个array对象 : vector
然后第二句
equal_to_ten_or_five = (vector == 10) | (vector == 5)
这里有个或操作
首先 vector==10 这个其实是把vector里面的所有对象与10对比,相同为True,不同为False
所以结果是(式子A):
array([False, True, False, False], dtype=bool)
然后vector==5,同理(式子B)
array([ True, False, False, False], dtype=bool)
然后最后一个或操作,也就是式子A|式子B,或操作的原则,只要有一个True,那就是True,只有两个都是False才是False,按照array的顺序一个个比较
例如式子A的第一个是False,式子B的第一个是True,那么结果就是True,也就是说
equal_to_ten_or_five这个结果的第一个元素是True,同理求出其它三个
那么equal_to_ten_or_five就是
array([ True, True, False, False], dtype=bool)
然后
vector[equal_to_ten_or_five] = 50
这句是指 把vector中为True的位置设置成50
所以结果是 50,50,15,20
事实上你还可以这么玩
vector[numpy.array([0,0,0,1])]=10086
你猜等于多少