1分钟带你搞明白 NumPy 的 ndarray 切片操作

NumPy 的 ndarray 切片操作是一种灵活且强大的方式,用于获取数组的子数组,切片操作使得对数组的操作更加灵活和方便,可以方便地获取、处理和分析数组的不同部分,进行数据处理和分析。切片操作的基本语法是使用方括号  [] ,并指定起始索引、结束索引和步长(可选)。以下是切片操作的一些关键特点和示例:
 
1. 指定起始和结束索引:可以通过指定起始索引和结束索引来提取指定范围内的元素。
例如, arr[1:3]  会提取从索引 1 到索引 2(不包括索引 3)的元素。
2. 省略起始索引:省略起始索引表示从数组的开头开始提取。
例如, arr[:3]  会提取数组的前三个元素。
3. 省略结束索引:省略结束索引表示提取到数组的末尾。
例如, arr[1:]  会提取从索引 1 到数组末尾的所有元素。
4. 步长:可以通过指定步长来改变提取元素的间隔。
例如, arr[::2]  会每隔一个元素提取一个。
5. 负数索引:负数索引可以从数组的末尾开始计数。
例如, arr[-2:-1]  会提取数组的最后两个元素。
6. 灵活组合:可以根据需求组合使用上述方式来提取各种不同的子数组。

下面就让我们通过代码实例来加深理解:

# Python列表中的切片l = [1,2,3,4,5,6,7,8,9]print(l[2:6])# 执行结果[3, 4, 5, 6]       # 列表翻转print(l[::-1])# 执行结果[9, 8, 7, 6, 5, 4, 3, 2, 1]# NumPy数组n = np.array(l)n# 执行结果array([1, 2, 3, 4, 5, 6, 7, 8, 9])n[2:6],l[::-1]# 执行结果(array([3, 4, 5, 6]), [9, 8, 7, 6, 5, 4, 3, 2, 1])# 二维或多维n = np.random.randint(0,10,size=(6,8))n# 执行结果array([[3, 1, 0, 5, 6, 1, 3, 9],       [2, 7, 2, 0, 6, 5, 0, 6],       [3, 7, 1, 6, 2, 4, 0, 3],       [9, 2, 2, 5, 6, 3, 4, 0],       [3, 5, 9, 3, 2, 3, 2, 9],       [4, 9, 6, 4, 6, 5, 4, 7]])       # 行,取一行print(n[0])# 执行结果[3 1 0 5 6 1 3 9]# 取连续的多行:切片print(n[1:4])# 执行结果[[2 7 2 0 6 5 0 6] [3 7 1 6 2 4 0 3] [9 2 2 5 6 3 4 0]]# 取指定多行:中括号print(n[[1,2,4]])# 执行结果[[2 7 2 0 6 5 0 6] [3 7 1 6 2 4 0 3] [3 5 9 3 2 3 2 9]] # 重复获取指定行print(n[[1,4,2,2,3]])# 执行结果[[2 7 2 0 6 5 0 6] [3 5 9 3 2 3 2 9] [3 7 1 6 2 4 0 3] [3 7 1 6 2 4 0 3] [9 2 2 5 6 3 4 0]]       # 列,取一列print(n[:,0])   # 取所有行,和第0列# 执行结果[3 2 3 9 3 4]print(n[1:4,0]) # 执行结果[2 3 9]# 取连续的多列:切片print(n[:,2:5])# 执行结果[[0 5 6] [2 0 6] [1 6 2] [2 5 6] [9 3 2] [6 4 6]] print(n[1:4,2:5])# 执行结果[[2 0 6] [1 6 2] [2 5 6]] # 取不连续的多列:中括号print(n[:,[1,3,4]])# 执行结果[[1 5 6] [7 0 6] [7 6 2] [2 5 6] [5 3 2] [9 4 6]] print(n[1:4,[1,3,4]])# 执行结果[[7 0 6] [7 6 2] [2 5 6]]

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾飞开源

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值