在初始化代码时,我需要创建几个相同形状的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
的几个引用,而不是独立的副本。
是否有类似的东西可以提供独立的副本?
答案 0 :(得分:1)
我们可以在这里利用元组拆包的优势。如果要创建标准的Numpy数组(零,一,眼等),则可以通过将形状的最外层值设置为所需的份数来实现:
a, b, c, d, e, f, g = np.zeros((7, ny, nx))
请注意,如果以这种方式创建“副本”,则实际上它们都是位于同一阵列中的所有切片。
如果您实际上想制作一个特定数组的副本(而不是对一个更大数组的切片进行操作),则应解压缩对np.copy
的调用的生成器表达式。
# a is the numpy array to be copied
b, c, d, e, f, g = (np.copy(a) for _ in range(6))
确保所复印的份数(在上述示例中为6或7)是正确的。