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

18 篇文章 0 订阅
本文详细介绍了Numpy库中的花式索引,包括一维和二维数组的应用实例,以及布尔索引、组合索引的使用方法,最后展示了np.ix_在多维数组选择中的应用。
摘要由CSDN通过智能技术生成

系列文章:Numpy系列文章-CSDN博客      

目录

花式索引(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]]]
  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值