詳解Python list 與 NumPy.ndarry 切片之間的區別
實例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# list 切片返回的是不原數據,對新數據的修改不會影響原數據 In [ 45 ]: list1 = [ 1 , 2 , 3 , 4 , 5 ] In [ 46 ]: list2 = list1[: 3 ] In [ 47 ]: list2 Out[ 47 ]: [ 1 , 2 , 3 ] In [ 49 ]: list2[ 1 ] = 1999 # 原數據沒變 In [ 50 ]: list1 Out[ 50 ]: [ 1 , 2 , 3 , 4 , 5 ] In [ 51 ]: list2 Out[ 51 ]: [ 1 , 1999 , 3 ] # 而 NumPy.ndarry 的切片返回的是原數據 In [ 52 ]: arr = np.array([ 1 , 2 , 3 , 4 , 5 ]) In [ 53 ]: arr Out[ 53 ]: array([ 1 , 2 , 3 , 4 , 5 ]) In [ 54 ]: arr1 = arr[: 3 ] In [ 55 ]: arr1 Out[ 55 ]: array([ 1 , 2 , 3 ]) In [ 56 ]: arr1[ 0 ] = 989 In [ 57 ]: arr1 Out[ 57 ]: array([ 989 , 2 , 3 ]) # 修改了原數據 In [ 58 ]: arr Out[ 58 ]: array([ 989 , 2 , 3 , 4 , 5 ]) # 若希望得到原數據的副本, 可以用 copy() In [ 59 ]: arr2 = arr[: 3 ].copy() In [ 60 ]: arr2 Out[ 60 ]: array([ 989 , 2 , 3 ]) In [ 61 ]: arr2[ 1 ] = 99282 In [ 62 ]: arr2 Out[ 62 ]: array([ 989 , 99282 , 3 ]) # 原數據沒被修改 In [ 63 ]: arr Out[ 63 ]: array([ 989 , 2 , 3 , 4 , 5 ]) |
以上就是Python list 與 NumPy.ndarry 切片之間的區別的詳解,如有疑問請留言或者到本站社區留言,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/qq_21046135/article/details/71249295