NumPy 布尔数组索引的实现示例

 更新时间:2026年01月06日 09:40:37   作者:溯维_Particle  
在NumPy中,布尔数组索引是一种强大的元素选择方式,它通过 True/False的逻辑判断筛选元素,下面就来详细的介绍一下如何使用,感兴趣的可以了解一下

在 NumPy 中,布尔数组索引是一种强大的元素选择方式,它通过 “True/False” 的逻辑判断筛选元素。以下是具体用法及带输出注释的示例代码。

1  与原数组同形的布尔数组索引

创建和原数组形状相同的布尔数组,True 表示选择该元素,False 表示排除。

1.1  基本用法:筛选满足条件的元素

import numpy as np

# 创建一个3行4列的数组(元素0-11)
a = np.arange(12).reshape(3, 4)  
print("原数组a:")
print(a)
# Output:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

# 创建与a同形的布尔数组:判断a中元素是否大于4
b = a > 4  
print("\n布尔数组b(a > 4的结果):")
print(b)
# Output:
# [[False False False False]
#  [False  True  True  True]
#  [ True  True  True  True]]

# 用布尔数组b索引a,提取所有True位置的元素(返回一维数组)
selected_elements = a[b]  
print("\n筛选出的元素:")
print(selected_elements)
# Output: [ 5  6  7  8  9 10 11]

1.2  赋值操作:批量修改满足条件的元素

# 继续使用上面的数组a和布尔数组b
a[b] = 0  # 将a中所有>4的元素赋值为0
print("修改后的数组a:")
print(a)
# Output:
# [[0 1 2 3]
#  [4 0 0 0]
#  [0 0 0 0]]

2  按维度的一维布尔数组索引

对每个维度提供一维布尔数组(长度需与对应维度一致),用于选择该维度的 “切片”。

2.1  选择某一维度的切片(以二维数组为例)

import numpy as np

a = np.arange(12).reshape(3, 4)  # 3行4列,行索引0-2,列索引0-3
print("原数组a:")
print(a)
# Output:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

# 行选择的布尔数组:长度=行数(3),选择第2、3行(索引1、2)
b1 = np.array([False, True, True])  
# 列选择的布尔数组:长度=列数(4),选择第1、3列(索引0、2)
b2 = np.array([True, False, True, False])  

# 选择行(第一个维度):等价于a[b1, :]
print("\n选择行(b1为[False, True, True]):")
print(a[b1])  
# Output:
# [[ 4  5  6  7]
#  [ 8  9 10 11]]

2.2  选择列(第二个维度)

print("\n选择列(b2为[True, False, True, False]):")
print(a[:, b2])
# Output:
# [[ 0  2]
#  [ 4  6]
#  [ 8 10]]

2.3  同时选择行和列

print("\n同时选择行和列(b1和b2结合):")
print(a[b1, b2])
# Output: [4 10]
# 解释:b1选择行1、2,b2选择列0、2 → 取(1,0)和(2,2)位置的元素:4和10

到此这篇关于NumPy 布尔数组索引的实现示例的文章就介绍到这了,更多相关NumPy 布尔数组索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • pytorch对可变长度序列的处理方法详解

    pytorch对可变长度序列的处理方法详解

    今天小编就为大家分享一篇pytorch对可变长度序列的处理方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Flask框架实现的前端RSA加密与后端Python解密功能详解

    Flask框架实现的前端RSA加密与后端Python解密功能详解

    这篇文章主要介绍了Flask框架实现的前端RSA加密与后端Python解密功能,结合实例形式详细分析了flask框架前端使用jsencrypt.js加密与后端Python解密相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Python Pexpect库的简单使用方法

    Python Pexpect库的简单使用方法

    这篇文章主要介绍了Python Pexpect库的简单使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Python如何将控制台输出另存为日志文件

    Python如何将控制台输出另存为日志文件

    这篇文章主要介绍了Python如何将控制台输出另存为日志文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Python操作Office(Word/Excel/PowerPoint)文档的功能库使用详解

    Python操作Office(Word/Excel/PowerPoint)文档的功能库使用详解

    Python提供了丰富的库来处理 Office 文档(Word、Excel、PowerPoint)、PDF 以及电子邮件等办公自动化任务,下面小编就和大家详细介绍一下它们的具体使用吧
    2026-03-03
  • Python集合的基础操作

    Python集合的基础操作

    这篇文章主要介绍了Python集合的基础操作,Python中的集合和数学上的集合基本是没有区别的,是无序的,即不可以使用索引访问的,集合中是不能出现重复元素的。想着情了解具体内容的小伙伴可以参考下面文章内容
    2021-11-11
  • python 面向对象三大特征详解

    python 面向对象三大特征详解

    这篇文章主要介绍了python 面向对象三大特征,小编觉得这篇文章讲的不错,感兴趣的朋友一起来阅读下面文章吧
    2021-10-10
  • Python中生成13位时间戳的常见方法

    Python中生成13位时间戳的常见方法

    这篇文章主要为大家详细介绍了Python中生成13位时间戳的常见方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-11-11
  • Django使用Channels实现WebSocket的方法

    Django使用Channels实现WebSocket的方法

    WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket允许服务端主动向客户端推送数据。这篇文章主要介绍了Django使用Channels实现WebSocket,需要的朋友可以参考下
    2019-07-07
  • Python如何检测项目哪些依赖库没有使用

    Python如何检测项目哪些依赖库没有使用

    这篇文章主要为大家详细介绍了五个Python检测项目中哪些依赖库没有使用的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04

最新评论