Python 将numpy数组设置为0而不复制

Python 将numpy数组设置为0而不复制,python,python-3.x,numpy,Python,Python 3.x,Numpy,我使用numpy.zeros\u like函数将现有数组设置为零,如下所示: import numpy as np x = np.random.rand(3, 3, 3, 3, 3) # Some random data x = np.zeros_like(x.shape) 我认为我的方法是创建一个新的零数组并更新对它的引用。我想知道是否有一种有效的方法可以在不进行初始化的情况下将所有内容设置为零。我之所以需要它,是因为它是在一个优化例程中调用的,该例程会被多次调用。您可以执行以下操作

我使用
numpy.zeros\u like
函数将现有数组设置为零,如下所示:

import numpy as np

x = np.random.rand(3, 3, 3, 3, 3)  # Some random data
x = np.zeros_like(x.shape)  

我认为我的方法是创建一个新的零数组并更新对它的引用。我想知道是否有一种有效的方法可以在不进行初始化的情况下将所有内容设置为零。我之所以需要它,是因为它是在一个优化例程中调用的,该例程会被多次调用。

您可以执行以下操作:

x[:] = 0

您可以执行以下操作:

x[:] = 0

(免责声明:链接的旧文档;第一个谷歌结果;检查你的numpy版本)@sascha不能相信我错过了…谢谢!
np.zero([3,3,3,3,3])
@percusse用零填充不一定只发生在初始化时。
zero\u类似于
采用数组,而不是其形状。(免责声明:链接的旧文档;第一个谷歌结果;检查你的numpy版本)@sascha不能相信我错过了…谢谢!
np.zero([3,3,3,3,3])
@percusse用零填充不一定只发生在初始化时。
zero\u类似于
采用数组,而不是其形状。谢谢。这也行得通。我猜这不会重新分配?@Luca只需使用
x.fill(0)
它比这个python级语法快近3倍。@Kasramvd我运行了一些
%timeit
s,它在(10001000)数组上的执行速度快了20%,在(10001000)数组上的错误边界重叠。即使有一点好处,我想你说得快3倍也是非常乐观的。谢谢。这也行得通。我猜这不会重新分配?@Luca只需使用
x.fill(0)
它比这个python级语法快近3倍。@Kasramvd我运行了一些
%timeit
s,它在(10001000)数组上的执行速度快了20%,在(10001000)数组上的错误边界重叠。即使有一点好处,我想你说得快3倍也是非常乐观的。