[:]在numpy中的作用

2024-04-25 09:36:11 发布

您现在位置:Python中文网/ 问答频道 /正文

[:]在这个程序中扮演什么角色:

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)

我也会得到同样的结果。那么,[:]的作用是什么?它在什么情况下起作用?你知道吗


Tags: 代码import程序numpy角色asnp情况
1条回答
网友
1楼 · 发布于 2024-04-25 09:36:11

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 = ...为变量分配一个新对象。out[:] = ...为现有对象指定新值。第二种情况下的确切操作取决于该对象的类。你知道吗

相关问题 更多 >