[英]Create numpy array based on multiple conditions on two numpy arrays
[英]How to get a new numpy array based on conditions of two other numpy arrays using only numpy operations?
假设我有a = [0, 1, 1, 0, 0, 1]
和b = [1, 1, 0, 0, 0, 1]
的 np.array
我想要一个新矩阵 c 使得如果a[i] = 0
和b[i] = 0
那么c[i] = True
我试过使用c = np.where(a == 0 & b==0)
但似乎这不适用于两个 arrays。
最终,我想要在不使用任何循环和外部库的情况下计算两种情况下都为真的'0'和两种情况下都为真的'1'。 请指教。
这是我的解决方案:
您的逻辑表达式不过是 c = NOT (a OR b)。 这意味着,只有当a[i]
和b[i]
都为零时,您才需要c[i] = True
。 OR 可以通过添加两个 arrays 来实现。 然后我们将数组转换为 boolean 类型并将其反转。
import numpy as np
a = np.array([0, 1, 1, 0, 0, 1])
b = np.array([1, 1, 0, 0, 0, 1])
c = np.invert((a+b).astype('bool'))
如果你想计算零的数量,你可以简单地执行
n_zeros = np.sum(c)
更通用的解决方案:
如果你想要你的数组c[i] = True
if a[i] == a0 and b[i] == b0
,你可以这样做:
c = (a == a0) & (b == b0)
条件a == a0
和b == b0
分别返回一个 boolean 数组,其中包含每个单独数组元素的条件真值。 按位运算符&
执行按元素逻辑与。 有关更多按位运算符,请参阅https://wiki.python.org/moin/BitwiseOperators 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.