gpt4 book ai didi

julia - 我怎么能不改变矩阵

转载 作者:行者123 更新时间:2023-12-01 23:25:19 25 4
gpt4 key购买 nike

在 Julia 中,如果 t 是某个矩阵

t = [1 2; 3 4]
t1 = t
t1[1,1] = 0
t2 = t

t2 给出与 t1 相同的输出。

如何使 t2 等于 t

最佳答案

他们实际上都是平等的:

julia> t = [1 2; 3 4]
2×2 Matrix{Int64}:
1 2
3 4

julia> t1 = t
2×2 Matrix{Int64}:
1 2
3 4

julia> t1[1,1] = 0
0

julia> t2 = t
2×2 Matrix{Int64}:
0 2
3 4

julia> t == t1 == t2
true

julia> t === t1 === t2
true

julia> pointer(t), pointer(t1), pointer(t2) # identical
(Ptr{Int64} @0x00007fd213d37000, Ptr{Int64} @0x00007fd213d37000, Ptr{Int64} @0x00007fd213d37000)

变量tt1t2 指向相同的数据、相同的内存位置。所以当你改变 t1 时,你改变了所有。

如果你想让它们不同,比如只有一个被修改,你必须使用copy:

julia> t = [1 2; 3 4];

julia> t1 = copy(t);

julia> t1[1,1] = 0;

julia> t2 = copy(t); # or just t if you want to avoid the copy

julia> t == t1 == t2
false

julia> pointer(t), pointer(t1), pointer(t2)
(Ptr{Int64} @0x00007fd21220e900, Ptr{Int64} @0x00007fd2142f9630, Ptr{Int64} @0x00007fd2142f9a90)

关于julia - 我怎么能不改变矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67341549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com