我不知道如何获得这种行为:
从这个矩阵:
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
Run Code Online (Sandbox Code Playgroud)
我想把所有的 1s 改为 5s,但只在最后一行。
我所做的是a[3, :][a[3, :] .== 1] .= 5但 a 的值没有改变。
我注意到:
foo[foo .== 1] .= 5
a[3, :] = foo
Run Code Online (Sandbox Code Playgroud)
它有效,但我正在尝试减少分配,应该删除它。
提前致谢
您可以使用@view和replace!:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |