NumPy 数组切片


来源:Python Numpy 教程

章节

Numpy 介绍
Numpy 安装
NumPy ndarray
NumPy 数据类型
NumPy 数组创建
NumPy 基于已有数据创建数组
NumPy 基于数值区间创建数组
NumPy 数组切片
NumPy 广播
NumPy 数组迭代
NumPy 位运算
NumPy 字符串函数
NumPy 数学函数
NumPy 统计函数
NumPy 排序、查找、计数
NumPy 副本和视图
NumPy 矩阵库函数
NumPy 线性代数


要访问或修改ndarray数组中的元素,可以使用数组切片/索引。

如前所述,ndarray数组索引从0开始。

使用切片访问数组,首先通过内置slice函数创建一个切片对象,该对象存储了创建时传入的startstopstep参数,把这个切片对象传给数组,我们就可以提取数组的一部分(切片)返回。

一维数组

示例

import numpy as np 
a = np.arange(10) 
s = slice(2,7,2) 
print(a[s])

输出

[2  4  6]

上面的例子中,首先使用arange()函数创建ndarray数组,然后定义一个切片对象,它的startstopstep值分别是2、7和2。当把这个切片对象传递给ndarray数组时,会从数组中提取一部分返回,返回部分的索引从2到7,步长2。

可以直接向ndarray数组传入start:stop:step格式的切片参数,效果相同。

示例

import numpy as np 
a = np.arange(10) 
b = a[2:7:2] 
print(b)

输出

[2  4  6]
  • [i] 如果只放一个参数,则返回与索引对应的单个项。
  • [:i] 如果在前面插入:,则从该索引之前的所有项都将被提取。
  • [start:stop] 如果使用了两个参数,中间用:分隔,则使用默认步骤1,提取两个索引(不包括stop)之间的项。

示例

单项切片

import numpy as np 
a = np.arange(10) 
b = a[5] 
print(b)

输出

5

示例

从索引之后切片

import numpy as np 
a = np.arange(10) 
print(a[2:])

输出

[2  3  4  5  6  7  8  9]

示例

从索引之前切片

import numpy as np 
a = np.arange(10) 
print(a[:2])

输出

[0 1]

示例

在索引之间切片

import numpy as np 
a = np.arange(10) 
print(a[2:5])

输出

[2  3  4] 

上述规则也适用于多维数组。

多维数组

示例

import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
print(a)  

# 切片从索引开始
print('a[1:]切片 ') 
print(a[1:])

输出

[[1 2 3]
 [3 4 5]
 [4 5 6]]

a[1:]切片
[[3 4 5]
 [4 5 6]]

切片还可以包括省略号(…),表示在该维度上选择全部。

示例

# 演示数组
import numpy as np 
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 

print ('数组:') 
print (a) 
print ('\n')  

# 返回一个数组,由第二列中的项目组成
print ('第二列中的项目是:')  
print (a[...,1]) 
print ('\n')  

# 返回第二行
print ('第二行中的项目是:') 
print (a[1,...]) 
print ('\n')  

# 返回第一列之后的项目
print ('第一列之后的项目:') 
print (a[...,1:])

输出

数组:
[[1 2 3]
 [3 4 5]
 [4 5 6]] 
 
第二列中的项目是:
[2 4 5] 

第二行中的项目是:
[3 4 5]

第一列之后的项目:
[[2 3]
 [4 5]
 [5 6]] 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值