import numpy as np
array1 = np.array([[1,2,3,4],[5,6,7,8]])
array1
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
切片
array1_slice1 = array1[1][1:4]
#等價於array1_slice1 = array1[1, 1:4]
array1_slice2 = array1[1][1:3]
查看切片
array1_slice1
array([6, 7, 8])
array1_slice2
array([6, 7])
改變切片的元素
array1_slice1[:] = 0
#等價於arra1y_slice1[:] = [0,0,0]
此時
array1_slice1
[0, 0, 0]
array1
array([[1, 2, 3, 4],
[5, 0, 0, 0]])
注意原始數組array1在切片部分的元素數值也發生了改變
array1_slice2
[0, 0]
此時原始數組array1的另一個切片slice2的相關元素也發生了改變
對array切片返回的是原始array的視圖,對切片的操作會影響到原始數組
多維切片
array1[:2, 1:]
array([[2, 3, 4],
[0, 0, 0]])
array1[:2, 1]
array([2, 0])
array1[1]
array([5, 0, 0, 0])
array1[1, :]
array([5, 0, 0, 0])
array1[1:, :]
array([[5, 0, 0, 0]])
array1[1, :].shape
(4,)
array1[1:, :].shape
(1, 4)