Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个用于创建numpy阵列的多个深度副本的行程序?_Python_Arrays_Numpy_Deep Copy - Fatal编程技术网

Python 一个用于创建numpy阵列的多个深度副本的行程序?

Python 一个用于创建numpy阵列的多个深度副本的行程序?,python,arrays,numpy,deep-copy,Python,Arrays,Numpy,Deep Copy,在初始化代码时,我需要创建几个形状相同的numpy数组。这很简单 >>> nx=10 >>> ny=10 >>> a = np.zeros((ny,nx)) >>> b = np.copy(a) >>> c = np.copy(a) >>> d = np.copy(a) >>> etc. 但这肯定是乏味的。我希望能有一艘客轮来做这件事。我试过了 >>>

在初始化代码时,我需要创建几个形状相同的numpy数组。这很简单

>>> nx=10
>>> ny=10
>>> a = np.zeros((ny,nx))
>>> b = np.copy(a)
>>> c = np.copy(a)
>>> d = np.copy(a)
>>> etc.
但这肯定是乏味的。我希望能有一艘客轮来做这件事。我试过了

>>> (b,c,d,e,f,g) = 6*[np.copy(a)]
但这给了我一些关于
a
的参考,而不是独立的副本


有类似的东西可以提供独立的拷贝吗?

我们可以在这里利用元组解包。如果要创建标准Numpy数组(0、1、eye等),则可以通过将形状的最外层值设置为所需的副本数来实现:

a,b,c,d,e,f,g=np.零((7,ny,nx))
请注意,如果以这种方式创建“副本”,它们实际上都是同一数组中的片

如果您真的想复制一个特定数组(而不是在一个较大数组的切片上操作),那么应该解包一个调用
np.copy

#a是要复制的numpy数组
b、 c,d,e,f,g=(范围(6)中的uu的np.copy(a))

确保复制的份数(上述示例中为6或7份)准确无误。

b,c,d,e,f,g=[np.copy(a)for uuu in range(6)]
?使用@user3483203的建议:
a,b,c,d=np.zeros((4,nx,ny))
在使用iterable解包时要小心。拆包不允许长度不匹配。不要仅仅为了避免一些编辑步骤而使用它。第一个选项的一个潜在缺点是内存泄漏,比如说,b、c、d、e、f、g超出范围,只有剩余的数据没有被释放。