详解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