python - 如何仅使用 numpy 操作根据其他两个 numpy 数组的条件获取新的 numpy 数组?
问题描述
假设我有 np.arraya = [0, 1, 1, 0, 0, 1]
和b = [1, 1, 0, 0, 0, 1]
我想要一个新的矩阵 c 使得ifa[i] = 0
然后b[i] = 0
c[i] = True
我试过使用c = np.where(a == 0 & b==0)
,但似乎这不适用于两个阵列。
最终,我想要在不使用任何循环和外部库的情况下计算两种情况下都为真的'0'和两种情况下都为真的'1'。请指教。
解决方案
这是我的解决方案:
您的逻辑表达式只不过是 c = NOT (a OR b)。这意味着,c[i] = True
只有a[i]
和b[i]
都为零时,您才需要 。OR 可以通过添加两个数组来实现。然后我们将数组转换为布尔类型并将其反转。
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
返回每个布尔数组,其中包含每个单独数组元素的条件真值。位运算符&
执行逐元素逻辑与。有关更多位运算符,请参阅https://wiki.python.org/moin/BitwiseOperators。
推荐阅读
- typescript - 汇总:从外部模块捆绑/嵌入 wasm 代码
- javascript - 由于大量 JSON 响应,AJAX 请求失败
- c++ - 从静态变量的析构函数调用 Windows 7 上的 std::conditional_variable notify() 问题
- authentication - Asp.net 核心认证
- jhipster - JHipster:如何向用户显示自定义错误消息
- operating-system - 进程上下文切换时的 TLB 刷新
- android - Activity被销毁后如何从前一个片段返回
- regex - 正则表达式锚 $ 在控制台中不起作用
- javascript - document.addEventListener 在 Ios 13.3 上不起作用
- selenium - 找到第一个元素匹配条件与前兄弟