Python列表和NumPy列表输出

时间:2017-03-04 08:49:34

标签: python python-2.7 numpy

我是python的初学者,并尝试了解数组类型的差异。

在这个例子中,我无法理解最后他们的输出是不同的。为什么代码对两者的行为有所不同?

Code Example

1 个答案:

答案 0 :(得分: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