「」""
(1)基本的切片和索引
注意:當你將乙個標量值賦值給乙個切片時(如arr[5:8]=12),該值會自動傳播到整個選區。
「」"import numpy as np
arr = np.arange(7)
print(arr)
print(arr[5])
print(arr[1:3])
print(arr[1:])
print(arr[:3])
arr[0:2] = 13 # 在指定位置新增資料,原有陣列往後移位
print(arr)
arr1 = [0,1,2,3,4,5,6]
print(arr1)
arr1[0:3] = [「a」] # 列表中arr[0:3]位置的內容,被替換成"a"
print(arr1)
print("-「30)
「」"(2)多維陣列的索引
在多維陣列中,如果省略了後面的索引,則返回物件會是乙個維度低一點的ndarray
如:在乙個二維陣列中,各索引位置上的元素不再是標量而是一維陣列:
「」"arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr2)
print(arr2[1]) # [4 5 6]
print(arr2[0][2]) # 3,取單個元素,第0行,第3列的元素
print(arr2[0,2]) # 3,取單個元素,第0行,第3列的元素
print("」*30)
「」"(3)檢視還是複製
檢視:跟列表最重要的區別在於,陣列切片是原始陣列的檢視。
這意味著資料不會被複製,修改切片,變動也會體現在原始陣列arr中。
由於numpy的設計目的是處理大資料,所以你可以想象一下,
假如numpy堅持要將資料複製來複製去的話會產生何等的效能和記憶體問題。
「」"arr3 = np.arange(10)
print(arr3)
slice = arr3[0:3]
print(slice)
slice[:] = 99 # 陣列中,arr3[0:3]的內容分別被替換成 99,99,99
print(arr3)
「」"複製:如果你想要得到的是ndarray切片的乙份副本而非檢視,
就需要明確地進行複製操作,copy()方法
「」"arr4 = np.arange(12).reshape(3,4)
print(arr4)
myarr4 = arr4.copy()
print(myarr4)
print(id(arr4),id(myarr4))
python numpy切片操作
python numpy中的切片與索引 import numpy as np import random a np.round random.random for i in range 10000 2 reshape 2500,4 print a print a 2 end n我是第二行 n pri...
python numpy 陣列的切片
參考 對於一維陣列 來說,python原生的list和numpy的array的切片操作都是相同的。arr name start end step 是複製源的意思 對於二維陣列來說,對陣列操作規範是這樣的 arr name 行操作,列操作 舉個例子 in np.arrange 12 reshape 3...
python Numpy中的切片操作
切片操作在陣列提取資料中經常用到,但使用靈活,有時不能理解具體的處理過程.所以將其徹底弄明白很有必要.直接上例子 import numpy as np 隨便設定乙個陣列a,其索引為0 9.a np.array 1 4,5 2,9 6,6 7,8 0 切片物件可以通過內建的 slice start,s...