You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NumPy高级索引:如何通过布尔数组运算得到目标数组?

实现方法

首先导入NumPy库并定义给定数组:

import numpy as np

a = np.array([False, True, True, False, True])
b = np.array([False, True, False])

核心思路是定位a中为True的元素位置,将这些位置的元素与b逐一进行布尔与运算,用简洁代码实现如下:

c = a.copy()
c[a] &= b

代码解释

  • c = a.copy():先复制原数组a,避免修改原始数据
  • c[a]会自动筛选出c中所有对应a为True的元素(此处数量恰好与b的长度匹配),&= b将这些元素依次与b中的元素执行布尔与运算,最终得到的c就是目标数组。

运行后验证结果:

print(c)
# 输出:array([False, False, True, False, False])

如果需要更直观的分步写法,也可以拆分为:

# 提取a中True的位置
true_positions = a == True
# 初始化与a形状相同的空数组
c = np.zeros_like(a)
# 将b的元素赋值到True位置,再与原a做与运算确保False位置保持False
c[true_positions] = b
c = c & a

该写法与前者效果完全一致,更便于理解逻辑。


内容的提问来源于stack exchange,提问作者Sengiley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:02:07