在Python中减去两列数组
我有一段代码,我想在Python中减去两个2x1矩阵,但我得到了一个错误的输出 我希望我的答案是在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
[[-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.]]