Python列表和NumPy列表输出
我是python的初学者,正在尝试理解数组类型的差异 在这个例子中,我无法理解最终他们的输出是不同的。为什么这两种代码的行为不同Python列表和NumPy列表输出,python,python-2.7,numpy,Python,Python 2.7,Numpy,我是python的初学者,正在尝试理解数组类型的差异 在这个例子中,我无法理解最终他们的输出是不同的。为什么这两种代码的行为不同 numpy在处理列表(数组)的方式上与Python不同numpy尝试保持数据缓冲区的完整性,而不是创建新的副本,而Python将创建新的对象。当您这样做时: >>> a = list('1234') >>> a ['1', '2', '3', '4'] >>> b = a[1:3] >>> b[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
正在使用的同一缓冲区的视图
()