0
这是如何操作技术上称为并且它允许什么其它功能:numpy的阵列更新命令解释
Z[1:-1,1:-1][birth|survive]=1
。其中Z
是4x4
数组,并且诞生和生存是相同大小的布尔数组。我明白这段代码的作用,但是想知道这个操作是如何调用的,还有什么可以用它来做的(谈论这个后面的部分[birth|survive]
)。
这是如何操作技术上称为并且它允许什么其它功能:numpy的阵列更新命令解释
Z[1:-1,1:-1][birth|survive]=1
。其中Z
是4x4
数组,并且诞生和生存是相同大小的布尔数组。我明白这段代码的作用,但是想知道这个操作是如何调用的,还有什么可以用它来做的(谈论这个后面的部分[birth|survive]
)。
管|
是bitwise or
operator。因此,birth|survive
相当于np.bitwise_or(birth, survive)
。据推测birth
和survive
是布尔数组,所以输出是一个布尔阵列与直截了当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 index到Z
阵列。
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
每个点birth
或survive
为真:
a[b] = 99
a
# array([99, 2, 99])
最简单的,这可以显示
当你在左侧使用双索引时,确保第一个产生一个'view',而不是'copy'。布尔型索引仅在紧靠'='之前有效。 – hpaulj