numpy中的陣列切片

2021-07-29 20:07:57 字數 1701 閱讀 6020

如同python中自帶的切片,numpy中也有類似的切片功能。接下來對兩個功能進行一下簡單的對比。

首先測試python自帶的功能,在shell視窗中測試如下:

in [1]: data =range(10)

in [2]: data

out[2]: [0, 1, 2,3, 4, 5, 6, 7, 8, 9]

in [3]: data1 =data[3:7]

in [4]: data1

out[4]: [3, 4, 5,6]

in [5]: data1[2] =123

in [6]: data1

out[6]: [3, 4,123, 6]

in [7]: data

out[7]: [0, 1, 2,3, 4, 5, 6, 7, 8, 9]

in [8]: data[5]=  234

in [9]: data

out[9]: [0, 1, 2,3, 4, 234, 6, 7, 8, 9]

in [10]: data1

out[10]: [3, 4,123, 6]

通過上面的結果可以看出,源資料不會影響切片出來的資料,而切片出來的物件也不會影響源資料。如此看來,切片出來的資料是被複製後重新建立出來的。

接下來再看一下numpy:

in [11]: data =range(10)

in [12]: data

out[12]: [0, 1, 2,3, 4, 5, 6, 7, 8, 9]

in [13]: importnumpy as np

in [14]: data

out[14]: [0, 1, 2,3, 4, 5, 6, 7, 8, 9]

in [15]: np_arr1 =np.array(data)

in [16]: np_arr1

out[16]: array([0,1, 2, 3, 4, 5, 6, 7, 8, 9])

in [17]: np_arr2 =np_arr1[2:7]

in [18]: np_a

np_arr1 np_arr2

in [18]: np_arr2

out[18]: array([2,3, 4, 5, 6])

in [19]:np_arr2[1] = 123

in [20]: np_arr2

out[20]:array([  2, 123,   4,  5,   6])

in [21]: np_arr1

out[21]:array([  0,   1,  2, 123,   4,   5,  6,   7,   8,  9])

in [22]:np_arr1[5] = 432

in [23]: np_arr1

out[23]:array([  0,   1,  2, 123,   4, 432,   6,  7,   8,   9])

in [24]: np_arr2

out[24]:array([  2, 123,   4, 432,  6])

從上面的結果可以看出,切片後生成的物件可以影響到原來的資料,而原來的資料也可以影響切片後的物件。由此可見,numpy中處理的資料位於同一塊記憶體儲存區域之中。而numpy很多時候適用於處理大資料的,而大資料的處理經常進行變動或者進行資料複製建立對計算機硬體的消耗是十分大的。而這也是numpy在處理上的一點獨到之處,通過獨特的資料結構保證大資料的處理效率。

Python中numpy陣列切片

python中符合切片並且常用的有 列表,字串,元組。下面那列表來說明,其他的也是一樣的。格式 開頭 結束 步長 開頭 當步長 0時,不寫預設0。當步長 0時,不寫預設 1 結束 當步長 0時,不寫預設列表長度加一。當步長 0時,不寫預設負的列表長度減一 步長 預設1,0 是從左往右走,0是從右往左...

numpy陣列的切片

個人學習筆記!切片語法 x start stop step 一 一維陣列的切片 import numpy as np x np.arange 5,13 xout 4 array 5,6,7,8,9,10,11,12 x 3 前3個元素,即索引0 2所代表的元素 out 6 array 5,6,7 x...

python中numpy陣列切片實驗解釋

print a 0 2 a 2 2 1 1 a 1 n m 1 1 1 等的含義 文章目錄 一維陣列 冒號 1 乙個引數 a i 2 兩個引數 b a i j 3 三個引數 格式b a i j s 4 乙個例子 二維陣列 逗號,取元素 x n0,n1 切片 x s0 e0,s1 e1 切片特殊情況 ...