Python 一个用于创建numpy阵列的多个深度副本的行程序?
在初始化代码时,我需要创建几个形状相同的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. 但这肯定是乏味的。我希望能有一艘客轮来做这件事。我试过了 >>>
>>> 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超出范围,只有剩余的数据没有被释放。