11、NumPy 花式索引与索引技巧

2024-01-21 16:36
文章标签 技巧 索引 numpy 花式

本文主要是介绍11、NumPy 花式索引与索引技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

花式索引(Fancy Indexing)

示例 1:一维数组的花式索引

示例 2:二维数组的花式索引

索引技巧

布尔索引

组合索引

使用np.ix_进行多维花式索引


花式索引(Fancy Indexing)

        花式索引是指使用整数数组作为索引来访问数组中的元素。这种方式与基本的索引不同,它允许我们一次性获取数组中不连续的多个元素。

示例 1:一维数组的花式索引

import numpy as np# 创建一个一维数组
arr = np.arange(1, 10)
print("Original array:", arr)# 使用花式索引获取指定元素
indices = [2, 5, 7]
selected_elements = arr[indices]
print("Selected elements:", selected_elements)

 输出:

Original array: [1 2 3 4 5 6 7 8 9]
Selected elements: [3 6 8]

示例 2:二维数组的花式索引

花式索引也适用于二维数组,可以一次性访问数组中的多行、多列或多个不连续的元素。

# 创建一个二维数组
arr_2d = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
print("2D array:\n", arr_2d)# 使用花式索引选择数组的多行
rows_to_select = [0, 2]
selected_rows = arr_2d[rows_to_select]
print("Selected rows:\n", selected_rows)# 使用花式索引选择数组的多列
cols_to_select = [1, 2]
selected_cols = arr_2d[:, cols_to_select]
print("Selected columns:\n", selected_cols)

输出:

2D array:[[10 20 30][40 50 60][70 80 90]]
Selected rows:[[10 20 30][70 80 90]]
Selected columns:[[20 30][50 60][80 90]]

索引技巧

NumPy 还提供了更多索引技巧,使数组操作更加灵活。

布尔索引

布尔索引允许我们使用布尔数组作为索引来选择数组中满足特定条件的元素。

# 创建一个简单的数组
arr = np.array([10, 20, 30, 40, 50])# 创建一个布尔数组
bool_indices = (arr > 20)
print("Boolean indices:", bool_indices)# 使用布尔索引选择元素
selected_elements = arr[bool_indices]
print("Selected elements:", selected_elements)

输出:

Boolean indices: [False False  True  True  True]
Selected elements: [30 40 50]

组合索引

我们可以组合使用基本切片和花式索引来实现更复杂的数据选择。

# 创建一个二维数组
arr_2d = np.array([[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]])# 使用组合索引访问元素
selected_elements = arr_2d[1:3, [1, 3]]
print("Selected elements:\n", selected_elements)

输出:

Selected elements:[[ 60  80][100 120]]

使用np.ix_进行多维花式索引

np.ix_函数可以帮助我们使用花式索引来选择多维数组中的特定区域。

# 创建一个三维数组
arr_3d = np.arange(27).reshape(3, 3, 3)
print("3D array:\n", arr_3d)# 使用 np.ix_ 选择特定区域
selected_region = arr_3d[np.ix_([0, 2], [0, 1], [0, 2])]
print("Selected region:\n", selected_region)

输出:

3D array:[[[ 0  1  2][ 3  4  5][ 6  7  8]][[ 9 10 11][12 13 14][15 16 17]][[18 19 20][21 22 23][24 25 26]]]
Selected region:[[[ 0  2][ 3  5]][[18 20][21 23]]]

这篇关于11、NumPy 花式索引与索引技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/630144

相关文章

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND