5、NumPy 高级索引和切片

18 篇文章 0 订阅

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

目录

一、切片(Slicing)

二、NumPy 高级索引详解

1. 布尔型索引

2. 列表/数组索引

3. 花式索引 (Fancy Indexing)

4. 元组索引

三、结合切片与高级索引


一、切片(Slicing)

        切片操作允许访问数组的子集。在 NumPy 中,可以对多维数组进行切片,就像处理一维数组一样简单。

import numpy as np

# 创建一个一维数组
arr = np.arange(10)
# 切片,获取索引1到6之间的元素
slice_arr = arr[1:7]
print(slice_arr)  # 输出: [1 2 3 4 5 6]

# 创建一个二维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 切片,获取第一行的第二和第三个元素
slice_arr_2d = arr_2d[0, 1:]
print(slice_arr_2d)  # 输出: [2 3]

二、NumPy 高级索引详解

1. 布尔型索引

布尔型索引允许我们根据条件选取数组中的元素。例如,假设有一个一维数组 arr

import numpy as np 
arr = np.array([4, 2, 9, 6, 7, 3])

创建一个布尔向量并用其作为索引来获取满足条件的元素:

mask = arr > 5 
selected = arr[mask]

selected 将包含大于5的所有元素。

2. 列表/数组索引

在多维数组中,可以使用整数列表或数组来进行索引。这允许你直接指定需要提取的元素位置。

multi_arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
indices = [0, 2] # 指定行索引 
selected_rows = multi_arr[indices]

selected_rows 将包含第0行和第2行的内容。

3. 花式索引 (Fancy Indexing)

花式索引允许使用非连续或者非顺序的索引集合。它可以用于一维或多维数组。

fancy_indices = [1, 3, 2, 0] 
shuffled_arr = multi_arr[fancy_indices]

shuffled_arr 将按照给定的顺序重新排列数组的行。

4. 元组索引

在多维数组中,可以使用元组形式的索引来选择特定的子区域。

slice_of_multi_arr = multi_arr[1:3, 1:3] # 等效于 multi_arr[(1, 2), (1, 2)]

这里选择了第1至第2行和第1至第2列的子矩阵。

三、结合切片与高级索引

在实践中,可以组合使用切片与高级索引以实现更复杂的操作。例如:

mixed_indexing = multi_arr[[0, 2], 1:3:2] # 结合了列表索引和切片

这里首先选择了第0行和第2行,然后在每一行上取第1列和第3列(由于步长为2,所以只取到了第3列)

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值