NumPy 基礎索引與切片

2022-03-11 07:52:57 字數 1597 閱讀 9463

首先你新建立了額乙個 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...