numpy数组的值传递

tuu*_*uut 0 python arrays numpy move-semantics

我有一个由函数更改的numpy数组。调用函数后,我要继续使用数组的初始值(调用修改函数之前的值)

# Init of the array
array = np.array([1, 2, 3])

# Function that modifies array
func(array)

# Print the init value [1,2,3]
print(array)
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以按值传递数组,或者我有义务进行深拷贝?

cs9*_*s95 5

如前所述,np.ndarray对象是可变的数据结构。这意味着在对对象进行更改时,任何引用特定对象的变量都将反映更改。

但是,请记住,大多数用于转换数组的numpy函数会返回新的数组对象,而使原始对象保持不变。

在这种情况下,您需要执行的操作取决于您正在执行的操作。如果您的函数修改了相同的数组,则需要将副本传递给该函数。您可以使用np.ndarray.copy。