我正在尝试构建一种数值推导函数。我想构建一个这样做的函数,但是我得到了一些我之前没遇到过的异常行为。我将数组w
传递给我的函数并从中定义新变量,比如说w_new
。问题是,当我操纵w_new时,我也会对w
进行更改。为什么会发生这种情况,我该如何解决?
这是我的最低工作示例:
import numpy as np
eps = 0.05 #doesnt matter
i = 0 #doesnt matter
weight = np.array([1.0, 2.0, 3.0, 4.0], dtype=float)
def func(eps, w, i):
w_min = w
w_min[i] = w_min[i] - eps
print('w_min:', w_min)
print('w:', w)
w_max = w
w_max[i] = w_max[i] + eps
print('w:', w)
print('w_max:', w_max)
print('w_min', w_min)
return [w_min, w_max, w]
当我在控制台中运行时,我得到了
func(eps, wgt, i)
('w_min:', [0.95, 1.1, 1.2])
('w:', [0.95, 1.1, 1.2])
('w:', [1.0, 1.1, 1.2])
('w_max:', [1.0, 1.1, 1.2])
('w_min', [1.0, 1.1, 1.2])