数组的索引和切片
2.2.1数据的索引(一组数据的索引类似于python列表)
上一章节知识点通道:ndarray多维数组知识点
import numpy as np
arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[3]
3
arr[-1]
9
arr[2]=123
arr
array([ 0, 1, 123, 3, 4, 5, 6, 7, 8, 9])
从代码中可以看出,数组的切片返回的是原始数组的视图。简单地说,视图就是原始数组的表现形式,切片操作并不会产生新数据,这就意味着在视图上操作都会使原数组产生变化
arr[3]=88
arr
array([ 0, 1, 123, 88, 4, 5, 6, 7, 8, 9])
arr1 = arr[-3:-1] #左闭右开
arr1
array([7, 8])
arr1[:] = 77 #将上面得到的[7,8]改成[77,77]
arr
array([ 0, 1, 123, 88, 4, 5, 6, 77, 77, 9])
数据的切片和索引返回都是原始数组的视图,如果需要的并非视图而是要复制数据,则通过copy方法来实现
arr
array([ 0, 1, 123, 88, 4, 5, 6, 77, 77, 9])
arr1 = arr[1].copy()
arr1
1
arr1 =34
arr1
34
arr
array([ 0, 1, 123, 88, 4, 5, 6, 77, 77, 9])
对于二维数组,可在单个或多个轴向上完成切片,也可以跟整数索引一起混合使用
arr = np.arange(15).reshape(3,5)
arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
arr