更改向量的元素

时间:2018-02-07 00:03:25

标签: python matrix element

我有一个'矩阵',然后选择一行作为'向量',然后更改此向量中的一个元素。 但是,'矩阵中的元素'也有变化。为什么呢?

Matrix = [[1,2,3],[4,5,6],[7,8,9]]
Vector = Matrix[1]
print('Vector', Vector)
print('Matrix', Matrix)
Vector[1] = float(99)
print('Vector', Vector)
print('Matrix', Matrix)

Output:
Vector [4, 5, 6]
Matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Vector [4, 99.0, 6]
Matrix [[1, 2, 3], [4, 99.0, 6], [7, 8, 9]]

3 个答案:

答案 0 :(得分:0)

我假设这段代码是用Python编写的。之所以发生这种情况,是因为Vector = Matrix[1]正在将Matrix的1索引行的引用分配给变量Vector

要获得Matrix[1]的深层副本,请使用copy.deepcopy。请尝试以下代码以查看是否发生相同的分配问题:

import copy
Matrix = [[1,2,3],[4,5,6],[7,8,9]]
Vector = copy.deepcopy(Matrix[1])

答案 1 :(得分:0)

Python列表使用指针。代码中VectorMatrix[1]的指针是相同的。尝试运行以下代码,看看我的意思。

Matrix = [[1,2,3],[4,5,6],[7,8,9]]

Vector = Matrix[1]
print(id(Vector) == id(Matrix[1]))   # True

Vector2 = Matrix[1].copy()
print(id(Vector2) == id(Matrix[1]))  # False

有关详细信息,请参阅此答案:

What exactly is the difference between shallow copy, deepcopy and normal assignment operation?

答案 2 :(得分:0)

我可以得出结论

Vector = Matrix[1]

将矢量设置为Matrix [1]

的参考

您需要复制Matrix [1]。

如果您使用Python进行编码,我建议您使用复制包中的deepcopy。希望它有所帮助