python 切片和索引的解释
一维数组的索引和切片
一维数组的索引和切片基本一致
它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改)。
这也意味着,如果不想更改原始数组,我们需要进行显式的复制,从而得到它的副本(.copy())。
arr = np.arange(8) # 创建一个一维数组
array([0, 1, 2, 3, 4, 5, 6, 7])
arr[5] # 获取索引为5的元素
5
arr[3:5] # 获取索引为3~5的元素,但不包括5,称为切片
array([3, 4])
arr[3:5]=8 #改变这段切片的值
In [92]: arr
Out[92]: array([0, 1, 2, 8, 8, 5, 6, 7]) #结果发现原来的值被替换了。以下是解决办法 通过.copy()保留原来数组
arr=np.arange(8) #重新生成一个新的一样的数组
array([0, 1, 2, 3, 4, 5, 6, 7])
arr_old = arr.copy() #复制该数组
arr[3:6] = 8 #对原来的数组赋值
array([0, 1, 2, 8, 8, 8, 6, 7])
arr_old #复制的数组还保留原样
array([0, 1, 2, 3, 4, 5, 6, 7])
二维数组
在二维数组中 逗号的使用代表行列位置的选取
冒号的使用代表行切片的选取,依据行列的位置而定,逗号前就是选取行,逗号后就是选取列。
arr2d = np.array([[1, 2, 3],[4, 5, 6],[