如同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 切片特殊情況 ...