2017-03-04 182 views
-1

我是python的初学者,并试图理解数组类型的差异。Python列表和NumPy列表输出

在这个例子中,我不明白最后他们的输出是不同的。为什么这两个代码的行为不同?

Code Example

回答

0

numpy在Python的不同之处它处理列表(阵列)的方式。 numpy试图保持数据缓冲区完好,不创建新的副本,而Python将创建新的对象。当你这样做:

>>> a = list('1234') 
>>> a 
['1', '2', '3', '4'] 
>>> b = a[1:3] 
>>> b[0] = 1 
>>> b 
[1, '3'] 
>>> a 
['1', '2', '3', '4'] 

修改b,并不影响a,因为b = a[1:3]创建一个新对象。但在numpy,当你这样做:

>>> import numpy as np 
>>> c = np.array(a) 
>>> c 
array(['1', '2', '3', '4']) 
>>> d = c[1:3] 
>>> d 
array(['2', '3']) 
>>> d[0] = 1 
>>> c 
array(['1', '1', '3', '4']) 

修改d变化c,因为d观点c使用相同的缓冲区。

Source