Python 科学计算库 Numpy (二) —— 索引及切片

Python 科学计算库 Numpy (二) —— 索引及切片,第1张

Python 科学计算库 Numpy (二) —— 索引切片

目录

1. 索引及切片

(1)通过下标以及内置函数进行索引切片

(2)使用冒号分隔参数进行切片索引

(3)对部分元素进行索引并切片

(4)对多维数组进行索引切片

2. 高级索引

(1)整数数组索引

(2)布尔索引

(3)花式索引


1. 索引及切片

数组中的元素可以通过索引以及切片的手段进行访问或者修改,和列表的切片 *** 作一样。

下面直接使用代码进行实现,具体 *** 作方式以及意义以代码注释为准:

(1)通过下标以及内置函数进行索引切片
"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

a = np.arange(10)#创建一个从0-9的一维数组
print(a)
i = slice(2, 7, 2)#从2开始到7结束,每隔1个元素进行索引,即start为1,stop为7,step为2
print(a[i])

得到的输出如下:

(2)使用冒号分隔参数进行切片索引
"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

a = np.arange(10)#创建一个从0-9的一维数组
print(a[2:7:2])#将起始、结束、步长使用冒号进行分割,表示索引切片

得到的输出如下:

(3)对部分元素进行索引并切片

a. 切取中间的一段

"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

a = np.arange(10)#创建一个从0-9的一维数组
print(a[2:5])#从2-5进行切片

 得到输出如下:

b. 切取某一个元素后的全部

"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

a = np.arange(10)#创建一个从0-9的一维数组
print(a[3:])#从3开始进行打印,直到打印完整个数组

得到输出如下:

(4)对多维数组进行索引切片
"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print('从数组索引a[2:]处开始切片:')
print(b[2:])
print('数组第二列进行切片:')
print(b[..., 2])
print('数组第二行进行切片:')
print(b[2, ...])
print('从第二列开始切片:')
print(b[..., 1:])

得到输出如下:

2. 高级索引 (1)整数数组索引
"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
c = b[[1, 0], [1, 0]]
print('对数组(1,1)和(0,0)处的元素进行索引切片:')
print(c)

得到输出如下:

(2)布尔索引

通过一个布尔数组来索引目标数组,布尔数组可以通过布尔运算得到符合条件的数组元素。

如下我们可以提取一个数组中不小于5的数:

"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

a = np.array([[1, 2, 3, 5], [6, 9, 2, 0], [9, 3, 2, 7]])
print('数组中不小于5的数如下:')
print(a[a >= 5])

得到输出如下:

(3)花式索引

花式索引指的是利用整数数组进行索引。花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应下标的行,如果目标是二维数组,那么就是对应位置的元素。花式索引跟切片不一样,它总是将数据复制到新数组中。

"""
Author:XiaoMa
date:2021/12/30
"""
import numpy as np

x = np.arange(32).reshape((8, 4))
print('生成的数组为:')
print(x)
print('传入顺序索引数组:')
print(x[[4, 2, 1, 7]])
print('传入倒序索引数组:')
print(x[[-4, -2, -1, -1]])
print('传入多个索引数组:')
print(x[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])])#输出的是两个向量不同维度组合的值

得到输出如下:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5710531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存