Python [:]在numpy中的作用

Python [:]在numpy中的作用,python,numpy,Python,Numpy,[:]在本课程中的角色是什么: import numpy as np l=np.array([[0,0,0,0], [4,5,6,7], [7,8,9,8]]) out[:]=np.nanstd(l, axis=0) print(out) 如果我像这样写代码的第三行,即没有[:]: 我会得到同样的结果。那么,[:]的作用是什么?它在什么环境下起作用?Jupyter/ipython会话维护一个包含历史的Out字典。但是Out[:]会给出一个错误 在

[:]在本课程中的角色是什么:

import numpy as np
l=np.array([[0,0,0,0],
            [4,5,6,7],
            [7,8,9,8]])
out[:]=np.nanstd(l, axis=0)
print(out)
如果我像这样写代码的第三行,即没有[:]:

我会得到同样的结果。那么,[:]的作用是什么?它在什么环境下起作用?

Jupyter/ipython会话维护一个包含历史的Out字典。但是Out[:]会给出一个错误

在新会话中,这会产生错误:

In [731]: out[:]=np.array([1,2,3])
....
NameError: name 'out' is not defined
但是如果我首先创建一个out,out[:]语法会起作用

In [732]: out=np.array([1,2,3])
In [733]: out
Out[733]: array([1, 2, 3])
In [734]: out[:]=np.array([4,5,6])
In [735]: out
Out[735]: array([4, 5, 6])
第一个变量创建一个out变量,在本例中为数组。第二个值用新值替换输入输出值。替换中的值数量必须与原始形状匹配

如果out最初定义为或重新定义为列表,则[:]赋值也会起作用,将所有值替换为不必匹配的新值

In [736]: out=[1,2,3]
In [737]: out[:]=[4,5]
In [738]: out
Out[738]: [4, 5]
使用列表out=。。。而out[:]=。。。它们非常相似,我们必须查看之前和之后的idout才能注意到差异


但基本要点是。。。将新对象指定给变量。out[:]=。。。将新值指定给现有对象。第二种情况下的确切操作取决于该对象的类。

首先,您的代码将引发NameError,因为out未定义。第二,第三行的备选方案与第一个示例中的相同。@BernBarn我正在Jupyter中运行代码,没有错误。我得到结果的数组:[2.86744176 3.29983165 3.74165739 3.55902608]。我在备选方案中编辑了输入错误。这是一个糟糕的重复。也许你已经在Jupyter设置中设置了out变量,但否则,这无法运行。切片语法确实有所不同,但如果不了解更多关于out的信息,没有人能说。
In [736]: out=[1,2,3]
In [737]: out[:]=[4,5]
In [738]: out
Out[738]: [4, 5]