Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表和NumPy列表输出_Python_Python 2.7_Numpy - Fatal编程技术网

Python列表和NumPy列表输出

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

我是python的初学者,正在尝试理解数组类型的差异

在这个例子中,我无法理解最终他们的输出是不同的。为什么这两种代码的行为不同


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
正在使用的同一缓冲区的视图

()