2024-04-25 09:36:11 发布
网友
[:]在这个程序中扮演什么角色:
[:]
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)
我也会得到同样的结果。那么,[:]的作用是什么?它在什么情况下起作用?你知道吗
Jupyter/ipython会话维护包含历史的Out字典。但是Out[:]会给出一个错误。你知道吗
Jupyter/ipython
Out
Out[:]
在新会话中,这将产生一个错误:
In [731]: out[:]=np.array([1,2,3]) .... NameError: name 'out' is not defined
但是如果我首先创建一个out,那么out[:]语法就起作用了
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=...
out[:]=...
id(out)
但基本点是out = ...为变量分配一个新对象。out[:] = ...为现有对象指定新值。第二种情况下的确切操作取决于该对象的类。你知道吗
out = ...
out[:] = ...
Jupyter/ipython
会话维护包含历史的Out
字典。但是Out[:]
会给出一个错误。你知道吗在新会话中,这将产生一个错误:
但是如果我首先创建一个
out
,那么out[:]
语法就起作用了第一个函数创建一个
out
变量,在本例中是一个数组。第二个将out
中的值替换为新值。替换中的值数必须与原始的形状匹配。你知道吗如果
out
最初是(或重新定义为)一个列表,[:]
赋值也起作用,将所有值替换为新值(不必匹配)。你知道吗对于一个列表,
out=...
和out[:]=...
非常相似,我们必须查看id(out)
之前和之后才能注意到差异。你知道吗但基本点是
out = ...
为变量分配一个新对象。out[:] = ...
为现有对象指定新值。第二种情况下的确切操作取决于该对象的类。你知道吗相关问题 更多 >
编程相关推荐