8. Numpy的索引和切片 (Indexing and Slicing)
《玩转Numpy计算库》视频课程
《玩转Numpy计算库》视频课程链接:https://edu.csdn.net/course/detail/28656
索引和切片 (Indexing and Slicing)
赋值和访问数组的元素类似于Python的其他序列数据类型,如列表和元组。 Numpy还有很多索引选择,类似于列表和元组的索引。
假设你熟悉Python的列表和元组的切片。 对于一维数组,其语法在numpy中是相同的,但它也可以应用于多个维度。
一维数组A的一般语法如下所示:
A[start:stop:step]
下面用一些例子说明“切片”的工作原理。 从最简单的情况开始,即切片一维数组:
F = np.array([1, 2, 2, 3, 5, 8, 13, 21])
# print the first element of F
print(F[0])
# print the last element of F
print(F[-1])
1
21
data = np.array([1, 2, 3])print(data[1])print(data[0:2])print(data[1:])print(data[-2:])
2
[1 2]
[2 3]
[2 3]
注意:在列表和元组上的切片会创建新对象,但对数组执行切片操作会在原始数组上创建一个视图(view)。 如果我们修改一个视图,原始数组也将被修改。
A = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
S = A[2:6]
print(S)
[2 3 4 5]
S[0] = 22
S[1] = 23
print(A)
[ 0 1 22 23 4 5 6 7 8 9]
使用列表执行类似的操作,可以看到我们得到了一个拷贝(副本):
lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
lst2 = lst[2:6]
lst2[0] = 22
lst2[1] = 23
print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
索引多维数组:
A = np.array([ [3.4, 8.7, 9.9], [1.1, -7.8, -0.7],[4.1, 12.3, 4.8]])
print(A[1][0])
1.1
我们访问了第二行中的元素,即索引为1的行和索引为0的第1列。
上面访问多维数组的方式可能非常低效。 原因是我们创建了一个中间数组A[1],从中访问索引为0的元素。所以它的行为类似于:
tmp = A[1]
print(tmp)
print(tmp[0])
[ 1.1 -7.8 -0.7]
1.1
在Numpy中还有另一种访问多维数组元素的方法:只使用一对方括号,所有索引都用逗号分隔:
print(A[1, 0])
1.1
在处理矩阵时,索引和切片操作非常有用:
data = np.array([[1, 2], [3, 4],[5,6]])
data
array([[1, 2],[3, 4],[5, 6]])
data[0, 1]
2
data[1:3]
array([[3, 4],[5, 6]])
data[0:2, 0]
array([1, 3])
a = np.arange(40).reshape(5, 8)
print(a)
[[ 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 27 28 29 30 31][32 33 34 35 36 37 38 39]]
a[2, -3]
21
a[:3, :5]
array([[ 0, 1, 2, 3, 4],[ 8, 9, 10, 11, 12],[16, 17, 18, 19, 20]])
a[-3:, -3:]
array([[21, 22, 23],[29, 30, 31],[37, 38, 39]])
a[:, 3]
array([ 3, 11, 19, 27, 35])
a[1, 3:6]
array([11, 12, 13])
a[1::2, ::3]
array([[ 8, 11, 14],[24, 27, 30]])
如果选择元组中的对象数目小于维N,则对于任何后续维度的假定是’:’。例如
A = np.array([ [ [45, 12, 4], [45, 13, 5], [46, 12, 6] ], [ [46, 14, 4], [45, 14, 5], [46, 11, 5] ], [ [47, 13, 2], [48, 15, 5], [52, 15, 1] ] ])
A[1:3, 0:2] # equivalent to A[1:3, 0:2, :]
array([[[46, 14, 4],[45, 14, 5]],[[47, 13, 2],[48, 15, 5]]])
8. Numpy的索引和切片 (Indexing and Slicing)相关推荐
- NumPy学习(索引和切片,合并,分割,copy与deep copy)
NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片合并分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示 ...
- Python 科学计算库 Numpy (二) —— 索引及切片
目录 1. 索引及切片 (1)通过下标以及内置函数进行索引切片 (2)使用冒号分隔参数进行切片索引 (3)对部分元素进行索引并切片 (4)对多维数组进行索引切片 2. 高级索引 (1)整数数组索引 ( ...
- 08_索引与切片,Indexing,Python风格的索引,index_select()选择特定索引,使用...索引任意多的维度,使用mask索引,take索引
1.8.索引与切片 1.8.1.Indexing 1.8.2.Python风格的索引 1.8.3.index_select()选择特定索引 1.8.4.使用-索引任意多的维度 1.8.5.使用mask ...
- 乐哥学AI_Python(二):Numpy索引,切片,常用函数
Numpy的索引和切片 ndarray对象的内容可以通过索引和切片查看和修改. 索引:ndarray对象中的元素索引基于0开始 切片:对数组里某个片段区域的描述 数组的切片也可以理解为原始数组的局部视 ...
- Numpy数组的索引与切片:取数组的特定行列
0.前言 Numpy的数组除了可使用内置序列的索引方式之外,提供了更多的索引能力,如通过切片.整数数组和布尔数组等方式进行索引.这使得Numpy索引功能很强大,但同时也带来了一些复杂性和混乱性,尤其是 ...
- Numpy入门教程:02. 索引、切片与迭代
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...
- python数组索引和切片_python numpy数组的索引和切片的操作方法
NumPy - 简介 NumPy 是一个 Python 包. 它代表 "Numeric Python". 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric, ...
- Python基础学习——Numpy包(2、索引、切片与迭代)
1. 副本与视图 Numpy中做数组运算或数组操作时,返回结果都是数组的副本或视图. 副本:原有数据的一份拷贝,改变副本不会改变原数据 视图:原有数据的一个引用或别称(赋值操作),对视图的修改会引起原 ...
- NumPy(十):ndarray数组索引、切片
一维.二维.三维的数组如何索引? 直接进行索引,切片 对象[ : , : , : ] – 先行后列 (以逗号分开各个维度,第1组表示第1维的切片方式,第2组表示第2维的切片方式-) 一.基本索引及切片 ...
- python numpy矩阵切片_Numpy数组的索引与切片和变形拼接分裂
1.概述 今天我们来讲一下Numpy数组的索引与切片,numpy数组的索引与切片和Python中的切片与索引的作用相同,可以快速的取出数据,进行下一步的运用或者查看,但是两种切片还有一些不同的地方.另 ...
最新文章
- 数据分析需求转型与商业模式重构
- 1.7 matlab矩阵元素的引用(可通过下标和序号引用)
- SUMO 设置车辆的换道模型
- CodeForces - 431C k-Tree(dp)
- 关于纠正2009年12月22日的总结的position的absolute.relative用法
- java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this a
- 【输入法】Rime-中州韵 基本设置 附:官方定制指南
- Rust : AES算法加密、解密
- 如何用计算机画出分子轨道图,常见的分子轨道图.pdf
- matlab经验分布函数 教程,经验分布函数.ppt
- python视频教程唐学韬-python
- 持久化内存挑战PERSISTENT MEMORY CHALLENGES
- 4、网络嗅探器的设计与实现
- 还记得JavaWeb中的组件Servlet吗?面试会问
- 2020-12-01 剖析 Linux hypervisor
- 用python实现一个自动保存复制图片的功能
- CentOS安装sun java
- 颜色转换助手RGB888-565
- 陌生男女社交软件交流手册
- ucore lab2
热门文章
- java 同比环比_数据相关概念同比,环比
- 基于三维激光雷达的二维占据栅格地图构建-简介
- 微信公众号迁移公证需要哪些材料?账号迁移流程来了
- STM32定时器周期任务函数编写
- 模板,宏,atuo关键字的简述
- 闰年2月29号 通过apache的ftp工具从ftp上下载文件失败
- 有道计算机网络知识,网易有道推广介绍1 让你了解到网易的知识。。。.pptx
- flutter报错-‘CachedNetworkImageProvider.load‘ has fewer positional arguments than those of overridden
- 证券期货行业数据模型设计
- Flash上传文件(结合asp.net)