Julia 使用双索引的矩阵赋值
我不知道如何获得这种行为: 根据该矩阵:Julia 使用双索引的矩阵赋值,julia,Julia,我不知道如何获得这种行为: 根据该矩阵: julia>a=[11;11;12] 3×3数组{Int64,2}: 1 1 1 1 1 1 1 1 2 我想把所有的1改为5,但只在最后一行 我所做的是a[3,:][a[3,:].==1].=5但是a的值没有改变 我注意到: foo[foo .== 1] .= 5 a[3, :] = foo 这是可行的,但我正试图减少分配,这应该被删除 提前感谢您可以使用@view和替换: julia> a = [1 1 1
julia>a=[11;11;12]
3×3数组{Int64,2}:
1 1 1
1 1 1
1 1 2
我想把所有的1改为5,但只在最后一行
我所做的是a[3,:][a[3,:].==1].=5
但是a的值没有改变
我注意到:
foo[foo .== 1] .= 5
a[3, :] = foo
这是可行的,但我正试图减少分配,这应该被删除
提前感谢您可以使用
@view
和替换代码>:
julia> a = [1 1 1
1 1 1
1 1 2]
3×3 Array{Int64,2}:
1 1 1
1 1 1
1 1 2
julia> replace!(@view(a[end, :]), 1 => 5)
3-element view(::Array{Int64,2}, 3, :) with eltype Int64:
5
5
2
julia> a
3×3 Array{Int64,2}:
1 1 1
1 1 1
5 5 2
问题是
a[3,:][a[3,:].==1].=5
与getindex(a,3,:)[a[3,:].==1].=5
getindex
返回a
您正在修改副本,而不是原始的a
您想使用视图
视图(a,3,:)[a[3,:].==1].=5
也可以使用@view
或@views
宏执行此操作