我非常喜欢朱莉娅.因此,如果这是一个愚蠢的问题,请原谅.
我有一个4*4矩阵AA.
julia> AA
4×4 Array{Int64,2}:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Run Code Online (Sandbox Code Playgroud)
我有一个数组pv并pq包含索引信息.
julia> pv
3-element Array{Int64,1}:
1
3
4
julia> pq
3-element Array{Int64,1}:
2
1
4
Run Code Online (Sandbox Code Playgroud)
我希望分配为零的元素AA[1,2],AA[3,1]和AA[4,4].
如果我运行,AA[pv,pq] = 0那么输出是:
4×4 Array{Int64,2}:
0 0 3 0
5 6 7 8
0 0 11 0
0 0 15 0
Run Code Online (Sandbox Code Playgroud)
但我需要这个作为输出
4×4 Array{Int64,2}:
1 0 3 4
5 6 7 8
0 10 11 12
13 14 15 0
Run Code Online (Sandbox Code Playgroud)
我知道这在Python中被称为Fancy Indexing.但是,我怎么能在朱莉娅这样做呢?我不能运行两个带有检查行和列索引的变量的if语句.
谢谢
另一种选择是使用CartesianIndex:
julia> AA[CartesianIndex.(pv, pq)]
3-element Array{Int64,1}:
2
9
16
julia> AA[CartesianIndex.(pv, pq)] .= 0
3-element view(::Array{Int64,2}, CartesianIndex{2}[CartesianIndex(1, 2), CartesianIndex(3, 1), CartesianIndex(4, 4)]) with eltype Int64:
0
0
0
julia> AA
4×4 Array{Int64,2}:
1 0 3 4
5 6 7 8
0 10 11 12
13 14 15 0
Run Code Online (Sandbox Code Playgroud)
请注意,您必须使用.=而不是=或者您将no method matching setindex_shape_check(::Int64, ::Int64)在1.0中得到一个神秘的错误..这在0.7中给出了一个很好的弃用警告,这是我应该仍然使用的.;-)
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |