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

Numpy中matrix[True, False]索引行为的原理探究

NumPy布尔索引的特殊行为原理

先明确核心区别:你用matrix[[True, False]]时,是一维布尔数组/列表和矩阵的行维度(长度2)匹配,所以筛选出对应行,这是常规的布尔索引逻辑。而你遇到的matrix[True, False]这类用单个布尔值的情况,本质是NumPy的广播机制和维度规则在起作用:

  • 当你给单个布尔值作为索引时,它会被广播成对应维度全是该布尔值的数组,同时NumPy要求索引的维度数要和数组维度数兼容:
    1. 对于matrix[True, False]:
      你的矩阵是2维(形状(2,2)),这里的两个单个布尔值分别对应行、列维度。True会被广播成行维度的[True, True](选中所有行),False被广播成列维度的[False, False](不选中任何列),最终自然返回空数组。
    2. 对于matrix[True, True]:
      两个True分别广播成行、列维度的全选数组,也就是选中所有行和所有列,所以返回整个矩阵。
    3. 对于matrix[True, True, False]:
      你的矩阵只有2维,但这里给了3个索引维度。NumPy会自动给矩阵添加一个长度为1的新维度(变成3维,形状(1,2,2)),第三个False对应这个新维度,意味着不选中该维度的任何元素,所以最终返回空数组。

简单总结:单个布尔值索引是对整个维度的全选或全排除,索引维度数和数组维度数匹配时,每个布尔值对应一个维度的选择;索引维度数超过数组维度时,会自动扩展数组维度,多余的布尔值决定新维度是否被选中,False就会导致空结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:22:09