Python numpy基本切片和資料索引

2021-09-23 10:19:00 字數 1333 閱讀 6387

「」""

(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...