一个用于创建 numpy 数组的多个深层副本的衬里?
One liner for creating several deep copies of a numpy array?
在初始化我的代码时,我需要创建几个形状相同的 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 数组(零、一、眼睛等),那么你可以通过将形状的最外层值设置为你想要的副本数来实现:
a, b, c, d, e, f, g = np.zeros((7, ny, nx))
请注意,如果您以这种方式创建 "copies",它们实际上都是同一个数组的切片。
如果你真的想复制一个特定的数组(而不是对一个更大的数组的切片进行操作),你应该解压一个调用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)是准确的。
在初始化我的代码时,我需要创建几个形状相同的 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 数组(零、一、眼睛等),那么你可以通过将形状的最外层值设置为你想要的副本数来实现:
a, b, c, d, e, f, g = np.zeros((7, ny, nx))
请注意,如果您以这种方式创建 "copies",它们实际上都是同一个数组的切片。
如果你真的想复制一个特定的数组(而不是对一个更大的数组的切片进行操作),你应该解压一个调用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)是准确的。