Python笔记:Numpy之索引和切片

一维数组

arr = np.arange(10)
#获取数组的第5个元素,从0开始
arr[5]
#获取数组的第5个至第8个(不包含第8个元素)元素
arr[5:8]
#从0开始,为数组的第5个至第8个(不包含第8个元素)元素赋值12
#为切片赋值时,整个选区里所有元素都会变成这个值
arr[5:8] = 5
#给数组中所有值赋值
arr[:] = 5

在Numpy中,我们是无法为切片创建新副本的,比如:

Python笔记:Numpy之索引和切片

以上的方法,在Numpy中,只是为切片取了一个别名,操作的对象还是源数组的选区。

多维数组

arr2 = np.array([[1,2,3],[3,4,5],[5,6,7]])
#从0开始,获取数组第1行的数组
arr2[1]
#从0开始,获取数组第0行第1列的元素
arr2[0][1]
#也可以写作
arr2[0,1]
#从0开始,获取前2行的数据
arr2[:2]
#从0开始,获取第1行前两列的数据
arr2[1,:2]
#从0开始,获取前2行第一列后的数据
arr2[:2,1:]

布尔型索引

data = np.random.randint(10, size=(5,10))

#从0开始,获取第3列为5的数据
data[data[:,3] == 5]
#可以使用“~”反转条件
data[~(data[:,3] == 5)]
#可以使用布尔运算符&(与)、|(或)
mask = (data[:,3] == 5)|(data[:,3] == 6)
data[mask]
#将所有小于5的数据设置为0
data[data < 5] = 0
#从0开始,将除了第3列等于5的行之外的数据全部设置为0
data[~(data[:,3] == 5)] = 0
上一篇:Java-快速排序


下一篇:面试题随记一