VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • numpy 基础入门 - 30分钟学会numpy(3)

 

如上所示:当将一个标量赋值给切片时,该值会自动传播整个切片区域,这个跟列表最重要本质区别,数组切片是原始数组的视图,视图上任何修改直接反映到源数据上面。

思考为什么这么设计? Numpy 设计是为了处理大数据,如果切片采用数据复制话会产生极大的性能和内存消耗问题。

 

假如说需要对数组是一份副本而不是视图可以如下操作:

1
2
3
4
5
6
arr_copy = arr[3:6].copy()  
arr_copy[:]=24  
arr_copy  
Out[54]: array([242424])  
arr  
Out[55]: array([ 0,  1,  2121212,  6,  7,  8,  9])

再看下对list 切片修改

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
l=range(10)  
  
l  
Out[35]: [0123456789]  
  
l[5:8= 12  
Traceback (most recent call last):  
  
  File "<ipython-input-36-022af3ddcc9b>", line 1in <module>  
    l[5:8= 12  
  
TypeError: can only assign an iterable  
  
l1= l[5:8]  
  
l1  
Out[38]: [567]  
  
l1[0]=12  
  
l1  
Out[40]: [1267]  
  
l  
Out[41]: [0123456789]

相关教程