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