2015-09-03 41 views
0

这是如何操作技术上称为并且它允许什么其它功能:numpy的阵列更新命令解释

Z[1:-1,1:-1][birth|survive]=1。其中Z4x4数组,并且诞生和生存是相同大小的布尔数组。我明白这段代码的作用,但是想知道这个操作是如何调用的,还有什么可以用它来做的(谈论这个后面的部分[birth|survive])。

+0

当你在左侧使用双索引时,确保第一个产生一个'view',而不是'copy'。布尔型索引仅在紧靠'='之前有效。 – hpaulj

回答

2

|bitwise or operator。因此,birth|survive相当于np.bitwise_or(birth, survive)。据推测birthsurvive是布尔数组,所以输出是一个布尔阵列与直截了当or行为:

a = np.array([True, True, False, False]) 
b = np.array([True, False, False, True]) 
a|b 
# array([ True, True, False, True], dtype=bool) 

对于整数,每个比特被认为是和一个整数阵列,其中在二进制表示中的每个数位返回具有已被or'编辑。关于其行为和documentation page的一些示例有更好的解释。


一旦你从birth|survive创建的布尔数组,你用它做一个boolean indexZ阵列。

a = np.array([1,2,3]) 
b = np.array([True, False, True]) 
a[b] # the elements of a where b is True 
# array([1, 3]) 

因为它是在分配=的左侧,蟒蛇将价值1分配给Z每个点birthsurvive为真:

a[b] = 99 
a 
# array([99, 2, 99]) 
最简单的,这可以显示