在 NumPy 中,如果想要访问,或修改数组中的元素,您可以采用索引或切片的方式,比如使用从 0 开始的索引依次访问数组中的元素,这与 Python 的 list 列表是相同的。
NumPy 提供了多种类型的索引方式,常用方式有两种:基本切片与高级索引。本节重点讲解基本切片。
NumPy 内置函数 slice() 可以用来构造切片对象,该函数需要传递三个参数值分别是 start(起始索引)、stop(终止索引) 和 step(步长) ,通过它可以实现从原数组的上切割出一个新数组。
示例如下:
import numpy as np
a = np.arange(10)
#生成切片对象
s = slice(2,9,3)#从索引2开始到索引9停止,间隔时间为2
print(a[s])
输出结果:
您也可以通过冒号来分割切片参数,最终也能获得相同结果,示例如下:
import numpy as np
a = np.arange(10)
b = a[2:9:2]
print(b)
输出结果:
下面对冒号切片做简单地说明:
下面对冒号类型的切片做了简单的实例演示:
示例 1:
a = np.arange(10)
b = a[3]
print (b)
输出结果:
示例 2:
import numpy as np
a = np.arange(10)
print (a[2:])
输出结果:
示例 3:
import numpy as np
a = np.arange(10)
print a[2:5]
输出结果如下:
多维数组切片操作,实例如下:
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print(a)
# 从[1:]索引处开始切割
print(a[1:])
输出结果:
注意:切片还可以使用省略号“…”,如果在行位置使用省略号,那么返回值将包含所有行元素,反之,则包含所有列元素。
实例演示如下:
import numpy as np
#创建a数组
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
#返回数组的第二列
print (a[...,1])
#返回数组的第二行
print (a[1,...])
#返回第二列后的所有项
print (a[...,1:])
输出结果: