栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python之Numpy库二(数组的访问与索引)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python之Numpy库二(数组的访问与索引)

1.1 单一元素访问

      一维数组的元素访问非常简单 和 Python 列表规则基本差不多。对单一元素的访问 索引遵循从 0 开始 依次递增 1

案例 创建一个一维数组 并访问第3个元素

import numpy as np
arr np.arange(10)
 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[6]
Out: 
arr[-1]
 9
2. 切片索引

2.1 基本切片

      跟列表类似 你可以一次性多个索引位置 进行多元素的访问。如果索引位置是离散的 可以手动构造列表切片的形式传入。也可以利用 start、stop、step 的方式来生成切片器。

案例 对于上述创建的一位数组 我们同时访问首尾的元素 那么可以指定其索引位置0和-1 语法如下

arr[[0, -1]]
 array([0, 9])

这种情况下 访问结果会重新构造为ndarray对象返回。

 对于有规律的访问 可以

arr[1: : 2]
 array([1, 3, 5, 7, 9])

构造相应的切片器 例如我们访问上述数组中的偶数元素

arr[0: -1: 2]
 array([0, 2, 4, 6, 8])

需要注意的是 在上述构造的切片器中 最后一位索引序列是无法取到的。例如我们访问奇数元素

arr[1: -1: 2]
 array([1, 3, 5, 7])

对比发现 当切片器指定了 -1 时 末位元素是不会被选中的。

2.2 多维数组切片索引

对于二维数组 在某些特殊情况下 可以通过连续切片的方式进行访问。

案例 例如 我们创建一个连续整数组成的方阵

arr_2d np.arange(20).reshape(5,4)
 array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11],
 [12, 13, 14, 15]
 [16, 17, 18, 19]])

对 arr_2d 构造一个连续切片

arr_2d[0][1:3]
 array([1, 2])

对多维数组的索引 想要达到同样的的效果 可以一次传入多个切片。例如对上述结果 可以修改为

arr_2d[0, 1:3]
 array([1, 2])

在上述步骤中 传入了 2 个切片。严格来讲 第一个切片是整数索引 是对数组的最外层 axis 0 进行选择 第二个切片是对数组的内一层 axis 1 进行选择。

更一般地 我们可以自由地根据需求 构造想要的切片效果。例如

arr_2d[0:2, 1:3]
 array([[1, 2],
 [5, 6]])

上述案例在 axis 0 方向上选择了第 0 和第 1 行 在 axis 1 方向上选择了第 1 列和第 2 列 两种切片方向的聚焦部分即为切片索引的结果。

需要指出的是 如果切片只有冒号 表示选取该方向的整个轴。例如 利用该方法 可以对二维数组进行列方向的切片

arr_2d[:, 1:3]
 array([[ 1, 2],
 [ 5, 6],
 [ 9, 10],
 [13, 14]
 [17, 18]])
3. 布尔型索引

直观上理解 通过布尔类型来完成索引的过程 我们可以称之为布尔型索引。

案例:例如对于上述 arr_2d 我们通过传入 [True, True, False, False] 这样一个布尔类型的列表 来选择第 0 行和第 1 行

arr_2d[[True, True, False, False]]
 array([[0, 1, 2, 3],
 [4, 5, 6, 7]])

需要注意的是 传入的布尔类型列表的长度 需要跟被索引的轴的长度一致 否则会引起 IndexError。在实际使用中 可以灵活地把布尔索引和切片索引、整数索引混合使用 非常方便。

例如 这里利用布尔型索引和切片索引来达到列方向切片的效果

arr_2d[:, [True, True, False, False]]
 array([[ 0, 1],
 [ 4, 5],
 [ 8, 9],
 [12, 13]
 [15, 16]])

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号