[:]
在此计划中的作用是什么:
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)
如果我像这样编写代码的第三行(即没有[:]
):
out=np.nanstd(l, axis=0)
我会得到相同的结果。那么,[:]的作用是什么?它在什么情况下有所作为呢?
答案 0 :(得分:1)
sindex
会话维护包含历史记录的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
最初(或重新定义为)列表,则out
分配也有效,将所有值替换为新值(不必匹配)。
[:]
列表In [736]: out=[1,2,3]
In [737]: out[:]=[4,5]
In [738]: out
Out[738]: [4, 5]
和out=...
非常相似,我们必须在注意到差异之前和之后查看out[:]=...
。
但基本点是id(out)
为变量分配一个新对象。 out = ...
为现有对象分配新值。第二种情况中的确切操作取决于该对象的类。