在Python中减去两列数组

在Python中减去两列数组,python,arrays,subtraction,Python,Arrays,Subtraction,我有一段代码,我想在Python中减去两个2x1矩阵,但我得到了一个错误的输出 我希望我的答案是 [[-1.0] [1.0] [-1.0]] 但是我越来越 [[0.] [0.] [0.]]. 这是我正在使用的代码: test = np.zeros((3,1)) test[0] = 1.0 test[1] = 2.0 test[2] = 3.0 test1 = test test1[0] = 2.0 test1[1] = 1.0 test1[2] = 4.0 ans = test

我有一段代码,我想在Python中减去两个2x1矩阵,但我得到了一个错误的输出

我希望我的答案是

[[-1.0]
 [1.0]
 [-1.0]]
但是我越来越

[[0.]
 [0.]
 [0.]].
这是我正在使用的代码:

test = np.zeros((3,1))
test[0] = 1.0
test[1] = 2.0
test[2] = 3.0


test1 = test
test1[0] = 2.0
test1[1] = 1.0
test1[2] = 4.0

ans = test - test1
print(ans)

您只是错误地初始化了
test1

请参见下面的更改
test1=np.zero((3,1))

收益率:

[[-1.]
 [ 1.]
 [-1.]]

如注释中所述,您的
test1
变量实际上引用的是
test

所以基本上你是用一个向量减去它本身,这显然会导致一个空向量

您可以自己验证这一点:

test1=test
打印(test1为test)#打印为真
为了避免这种行为,您需要创建不同的对象,例如使用
copy
或切片

test1=test.copy()
打印(test1为test)#打印错误
test1=test1[:]
打印(test1为test)#打印错误
通过这种方式,您可以初始化新变量,并在向量减法后获得预期结果

test1[0]=2.0
test1[1]=1.0
test1[2]=4.0
ans=测试-测试1
打印(ans)
#打印[[-1]
#         [ 1.]
#         [-1.]] 

两个变量都引用同一个对象,您必须执行test1=test[:]
[[-1.]
 [ 1.]
 [-1.]]