一、numpy數組切片操作
numpy數組切片是指從原有的數組中截取出一個新的子數組,對子數組的修改不影響原數組。numpy通過冒號(:)來實現切片。切片的語法形式為:a[start:end:step]。其中start是切片的起始下標,end是切片的截止下標(不包含在切片內),step是切片的步長。如果不指定start,默認為0;如果不指定end,默認為數組的長度;如果不指定step,默認為1。
下面的例子演示了numpy數組的切片操作:
import numpy as np # 創建numpy數組 arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 切片操作 print(arr[1:5]) # [2 3 4 5] print(arr[:5]) # [1 2 3 4 5] print(arr[5:]) # [6 7 8 9] print(arr[::2]) # [1 3 5 7 9]
二、numpy數組指定列取
numpy可以通過冒號(:)來選擇數組的某些列進行操作。語法形式為:a[:,start:end:step]。其中冒號(:)表示所有的行,start、end、step與切片操作相同。
下面的例子演示了如何指定列對numpy數組進行操作:
import numpy as np # 創建numpy數組 arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 指定列取 print(arr[:, 1]) # [2 5 8] print(arr[:, 1:3]) # [[2 3] [5 6] [8 9]] print(arr[:, ::2]) # [[1 3] [4 6] [7 9]]
三、numpy數組切片賦值
numpy數組切片不僅僅是獲取數組的部分元素,還可以將新的值賦給這些元素,從而修改原有的數組。對於對子數組使用賦值操作,修改後的值會反映在原有的數組上。
下面的例子演示了如何通過numpy數組的切片操作,修改數組元素的值:
import numpy as np # 創建numpy數組 arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 切片賦值操作 arr[1:5] = 0 print(arr) # [1 0 0 0 0 6 7 8 9]
四、numpy數組、numpy數組切片與索引
numpy數組切片是指截取出一個新的數組,對新數組的操作不會影響原有的數組。而對於numpy數組切片後的數據,如果採用索引進行操作,修改後的值會反映在原數組上。
下面的例子演示了numpy數組、numpy數組切片與索引的關係:
import numpy as np # 創建numpy數組 arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) arr_slice = arr[1:5] print(arr) # [1 2 3 4 5 6 7 8 9] print(arr_slice) # [2 3 4 5] # numpy數組切片後使用索引修改值 arr_slice[1] = 0 print(arr_slice) # [2 0 4 5] print(arr) # [1 2 0 4 5 6 7 8 9]
五、numpy數組切片還是數組還是列表
numpy數組切片得到的是一個新的數組,而不是列表。即使原有的數組是列表,通過切片操作得到的依然是一個數組。
下面的例子演示了numpy數組切片得到的是一個數組:
import numpy as np # 創建列表 lst = [1, 2, 3, 4, 5] # 通過列表創建numpy數組 arr = np.array(lst) # 切片操作 arr_slice = arr[1:3] print(type(arr_slice)) #
六、numpy數組切片返回數組的引用對嗎
numpy數組切片操作返回的是一個新的數組,而不是原有數組的引用。也就是說,對新的數組進行操作,不會影響到原有的數組。
下面的例子演示了numpy數組切片返回的是一個新的數組:
import numpy as np # 創建numpy數組 arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 切片操作 arr_slice = arr[1:5] print(arr_slice) # [2 3 4 5] # 修改切片 arr_slice[1] = 0 print(arr_slice) # [2 0 4 5] # 原數組沒有改變 print(arr) # [1 2 3 4 5 6 7 8 9]
七、numpy數組排序
numpy中有許多排序算法可以對數組進行排序,其中最常用的算法是快排。
下面的例子演示了numpy數組的排序操作:
import numpy as np # 創建numpy數組 arr = np.array([4, 2, 6, 8, 1, 5, 3, 7, 9]) # 排序操作 print(np.sort(arr)) # [1 2 3 4 5 6 7 8 9]
八、numpy二維數組切片
對於二維數組,numpy的切片操作除了在行方向上進行截取操作外,還可以在列方向上進行操作。同時,可以通過冒號(:)對行和列同時進行操作。
下面的例子演示了numpy二維數組的切片操作:
import numpy as np # 創建numpy數組 arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 二維數組切片 print(arr[1:3, 1:3]) # [[5 6] [8 9]] print(arr[1:3, ::2]) # [[4 6] [7 9]] print(arr[:, 1:3]) # [[2 3] [5 6] [8 9]]
九、python二維數組切片規則選取
在對二維數組進行切片操作時,可以在行方向和列方向上分別進行選擇。對於規則選取,程序員需要根據具體的需求進行選擇。
下面的例子演示了對python二維數組進行切片操作所需要的規則選取:
# 創建python二維數組 arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # python二維數組切片操作 print(arr[1:]) # [[4, 5, 6], [7, 8, 9]] print(arr[:2]) # [[1, 2, 3], [4, 5, 6]] print(arr[:2, 1:]) # [[2, 3], [5, 6]]
結束語
本文詳細講解了numpy數組的切片操作,包括numpy數組切片操作、numpy數組指定列取、numpy數組切片賦值、numpy數組、numpy數組切片與索引、numpy數組切片還是數組還是列表、numpy數組切片返回數組的引用對嗎、numpy數組排序和numpy二維數組切片等。通過本文的學習,讀者可以熟練掌握numpy數組的切片操作,在numpy編程中可以更加得心應手。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/269920.html