繁体   English   中英

如何根据其他两个 numpy arrays 仅使用 Z2EA9510C37F7F821ECBFZF24 操作的条件获得新的 numpy 阵列?

[英]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] = 0b[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 == a0b == b0分别返回一个 boolean 数组,其中包含每个单独数组元素的条件真值。 按位运算符&执行按元素逻辑与。 有关更多按位运算符,请参阅https://wiki.python.org/moin/BitwiseOperators

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM