首先你新建立了額乙個 ndarray 陣列:
arr = np.arange(10)
和python的列表相似的,你可以通過索引和切片來取值
print(arr[6]) #索引從0開始
print(arr[5:8]) #顧頭不顧尾
6
[5 6 7]
和列表一樣,陣列裡的切片取值也是顧頭不顧尾,並且索引是從0開始的。
重要的乙個例子
arr = np.arange(10)
piece_of_arr = arr[4:6]
piece_of_arr[:] = 24
print(arr)
[ 0 1 2 3 24 24 6 7 8 9]
是的,區別於python的內建列表,陣列的切片是原陣列的檢視,也就意味著資料並不是被複製了乙份,任何對於仕途的修改都會反映到原陣列上。
相比於其他的陣列程式語言都是更為急切的複製資料,由於numpy被設計成適合處理非常大的陣列,所以不會那麼輕易的讓開發者複製,你可以想想一下如果numpy持續複製資料會引起多少記憶體問題。
但是如果你還是要乙份陣列切片的拷貝,而不是乙份檢視的話,就必須顯式的複製這個陣列,
比如:arr[5 : 8].copy()
import numpy as np
arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr1)
print('-----------')
print(arr1[:2]) #切片第1行到第2行,每一列的元素都要
print('-----------')
print(arr1[:2, 1:]) #切片第1行到第2行,第2列到最後一列
print('-----------')
print(arr1[1,:2]) #切片第2行,第1列到第2列的元素
print('-----------')
print(arr1[:,:1]) #切片每一行,第一列的元素
print('-----------')
arr1[:2, 1:] = 0 #切片第1行到第2行,第2列到最後一列的元素,並把切片結果全都改為0,所以會對映回原陣列。
print(arr1)
print('-----------')
結果
[[1 2 3]
[4 5 6]
[7 8 9]]
-----------
[[1 2 3]
[4 5 6]]
-----------
[[2 3]
[5 6]]
-----------
[4 5]
-----------
[[1]
[4][7]]
-----------
[[1 0 0]
[4 0 0]
[7 8 9]]
-----------
numpy索引與切片
作用 要獲取陣列的單個元素,指定元素的索引即可 例子 print x 2 3 print x 2 21 22 23 24 25 print x 2 1 22 print x 2,1 22 切片操作是指抽取陣列的一部分元素生成新陣列。對 python列表進行切片操作得到的陣列是原陣列的 副本,而對 n...
Numpy陣列索引與切片 高階索引
有一些numpy中索引結果時候不太理解的地方,以後可以多多熟悉,熟悉後加以運用。import numpy as np a np.array 1,2,3 3,4,5 4,5,6 print a 1 第2列元素 print a 1,第2行元素 print a 1 第2列及剩下的所有元素整數陣列的索引 以...
Numpy 索引及切片
索引和切片在基礎語法那篇文章中介紹過,python內建的資料型別基本都可以使用索引和切片,numpy是乙個陣列物件,我們來看看它的索引和切片有什麼不同的地方。普通索引及切片 一維陣列 和python中的列表一樣 ar np.arange 20 print ar print ar 4 print ar...