当前位置: 首页 > news >正文

机器学习——Numpy的神奇索引与布尔索引

在 NumPy 中,神奇索引(Fancy Indexing) 和 布尔索引(Boolean Indexing) 是两种强大的索引方式,用于从数组中提取特定元素或子集。以下是它们的详细说明和示例:


1. 神奇索引(Fancy Indexing)

  • 定义:通过传递一个整数数组或列表来索引数组,返回指定位置的元素。

  • 特点

    • 索引数组可以是任意形状。
    • 返回的结果形状与索引数组一致。
  • 示例

  • import numpy as np 
    array = np.array([10,  20, 30, 40, 50])
    indices = [1, 3, 4]  # 指定索引位置 
    result = array[indices]  # 提取对应位置的元素 
    print(result)  # 输出: [20 40 50]

  • 多维数组示例

    matrix = np.array([[1,  2, 3], [4, 5, 6], [7, 8, 9]])
    row_indices = [0, 1, 2]
    col_indices = [1, 0, 2]
    result = matrix[row_indices, col_indices]  # 提取 (0,1), (1,0), (2,2) 位置的元素 
    print(result)  # 输出: [2 4 9]


2. 布尔索引(Boolean Indexing)

  • 定义:通过传递一个布尔数组来索引数组,返回满足条件的元素。

  • 特点

    • 布尔数组必须与目标数组形状一致。
    • 返回的结果是一维数组。
  • 示例

    array = np.array([10,  20, 30, 40, 50])
    condition = array > 30  # 创建布尔条件 
    result = array[condition]  # 提取满足条件的元素 
    print(result)  # 输出: [40 50]

  • 多维数组示例

    matrix = np.array([[1,  2, 3], [4, 5, 6], [7, 8, 9]])
    condition = matrix > 5  # 创建布尔条件 
    result = matrix[condition]  # 提取满足条件的元素 
    print(result)  # 输出: [6 7 8 9]


3. 神奇索引与布尔索引的区别

特性神奇索引(Fancy Indexing)布尔索引(Boolean Indexing)
索引类型整数数组或列表布尔数组
结果形状与索引数组一致一维数组
适用场景提取指定位置的元素提取满足条件的元素
多维数组支持支持,通过指定行列索引支持,返回满足条件的所有元素

4. 应用场景

  • 神奇索引
    • 提取特定位置的元素。
    • 重新排列数组。
  • 布尔索引
    • 过滤满足条件的元素。
    • 数据清洗和预处理。

5. 注意事项

  • 神奇索引:索引数组的值必须在数组的合法范围内,否则会抛出 IndexError
  • 布尔索引:布尔数组必须与目标数组形状一致,否则会抛出 IndexError

示例代码总结

import numpy as np 
 
# 神奇索引 
array = np.array([10,  20, 30, 40, 50])
indices = [1, 3, 4]
result_fancy = array[indices]  # 输出: [20 40 50]
 
# 布尔索引 
condition = array > 30 
result_boolean = array[condition]  # 输出: [40 50]

相关文章:

  • JWT 认证机制
  • 第十三章 : Names in Templates_《C++ Templates》notes
  • 使用Gitee Go流水线部署个人项目到服务器指南
  • 稳定运行的以Oracle NoSQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
  • 2025年01月03日微创网络(杭州银行外包)前端面试
  • 香橙派连接摄像头过程
  • 深入剖析 RocketMQ 的 ConsumerOffsetManager
  • RK3568开发笔记-egtouch触摸屏ubuntu系统屏幕校准
  • vue3中,通过获取路由上的token直接进入首页,跳过登录页面
  • 【前端 vue 或者麦克风,智能语音识别和播放功能】
  • python八股(—) --FBV,CBV
  • Python元组
  • LeetCode面试经典150题
  • 《网络安全等级测评报告模版(2025版)》
  • 点云分割方法
  • vue3:十一、主页面布局(实现基本左侧菜单+右侧内容效果)
  • 万亿级数据量的OceanBase应用从JVM到协议栈立体化改造实现性能调优
  • 对比学习(Contrastive Learning)初接触
  • 通过仿真确定抗积分饱和策略的最佳系数
  • 《TCP/IP网络编程》学习笔记 | Chapter 20:Windows 中的线程同步
  • 伊美第四轮核问题谈判开始
  • 一生要出片的年轻人,买爆相机
  • 深圳市政协原副主席王幼鹏被“双开”
  • 招商蛇口:今年前4个月销售额约498.34亿元
  • 中日有关部门就日本水产品输华问进行第三次谈判,外交部回应
  • 海关总署统计分析司司长:4月进出口增速较一季度加快4.3个百分点