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

Written by

in

文章目录
  • 创建和原数组形状相同的布尔数组,True 表示选择该元素,False 表示排除。
  • 对每个维度提供一维布尔数组(长度需与对应维度一致),用于选择该维度的 “切片”。
  • 目录
    • 1  与原数组同形的布尔数组索引
      • 1.1  基本用法:筛选满足条件的元素
      • 1.2  赋值操作:批量修改满足条件的元素
    • 2  按维度的一维布尔数组索引
      • 2.1  选择某一维度的切片(以二维数组为例)
      • 2.2  选择列(第二个维度)
      • 2.3  同时选择行和列

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

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

    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]
    

    # 继续使用上面的数组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]]
    

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

    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]]
    

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

    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 布尔数组索引内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Numpy之布尔索引的实现

    站内搜索