NumPy索引和切片
ndarray 对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样。如前所述,ndarray 对象中的项目遵循从零开始的索引。提供三种类型的索引方法 -字段访问、基本切片和高级索引。
基本切片是 Python 对 n 维切片的基本概念的扩展。Python slice 对象是通过将start 、 stop和step参数提供给内置slice函数来构造的。将此切片对象传递给数组以提取数组的一部分。
Numpy数组索引
一维数组
一维 numpy 数组的索引从 0 开始。这意味着第一个元素的索引为 0。第二个元素的索引为 1,第三个元素的索引为 2,依此类推。比方说,我想打印数字 7(这是第二个元素)。我通过用方括号中的 1索引数组“arr”来得到它
import numpy as np
a = np.array([4,7,2])
print(a[1]) # 7
二维数组
要从二维数组中获取单个元素,我必须提供两个索引,例如,要从该数组中获取数字 5,您必须使用第一个索引然后是第二个索引来索引该数组。
import numpy as np
a = np.array([[2,3,4],
[1,2,5],
[3,4,3]])
print(a[1,2]) # 5
三维数组
对于三维或多维数组,您必须为每一维提供一个索引。第一个索引总是选择最外面的方括号内的元素。通过这种逻辑,您可以计算出任意数组中索引的顺序。假设我想从这个数组中检索数字 10,从完整的数组开始,选择包含你想要的数字的部分,把剩下的扔掉。
import numpy as np
a = np.array([[[2,1],[4,5],[6,2]],
[[3,4],[7,6],[10,2]]])
print(a[1,2,0]) # 10
Numpy数组切片
一维数组
为了对一维数组进行切片,我提供了一个以分号 (:) 分隔的开始编号和结束编号。然后范围从起始编号开始,到结束编号前一。
import numpy as np
a = np.array([2,3,1,5,6])
print(a[1:4]) # [3,1,5]
二维数组
对二维数组进行切片时,我想结果是所选行(第一个索引)和列(第二个索引)之间的交集。
import numpy as np
a = np.array([[2,3,4,3,6],
[1,2,5,7,5],
[3,4,3,3,5],
[5,6,3,2,1],
[3,1,4,5,6]])
print(a[1:3,1:]) #[[2 5 7 5]
[4 3 3 5]]
三维数组
对 3 维或更多维数组进行切片遵循与 2D 数组相同的逻辑,
以下方式切片 3D 或更多维数组。我从最外面的括号开始,根据第一个索引从头到尾选择。然后我将括号更深一层,并根据第二个索引从头到尾选择
import numpy as np
a = np.array([[[2,1],[4,5],[6,2]],
[[3,4],[7,6],[10,2]]])
print(a[:,1:,:]) #[[[ 4 5]
[ 6 2]]
[[ 7 6]
[10 2]]]
总结
以上是晓得博客为你介绍的NumPy索引和切片的全部内容,向你解释如何从 numpy 数组中选择单个元素,如何对一维数组进行切片,直到能够对具有任意数量维度的数组进行切片。
推荐:NumPy教程
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折