gpt4 book ai didi

indexing - 如何在 Julia 中实现类似于花式索引的东西?

转载 作者:行者123 更新时间:2023-12-02 05:47:20 25 4
gpt4 key购买 nike

我对 Julia 非常陌生。因此,如果这是一个愚蠢的问题,请原谅。

我有一个 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

我有一个包含索引信息的数组 pvpq

julia> pv
3-element Array{Int64,1}:
1
3
4

julia> pq
3-element Array{Int64,1}:
2
1
4

我希望将零分配给元素 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

但我需要这个作为输出

4×4 Array{Int64,2}:
1 0 3 4
5 6 7 8
0 10 11 12
13 14 15 0

我知道这在 Python 中称为 Fancy Indexing。但是,我怎样才能在 Julia 中做到这一点?我无法使用检查行和列索引的变量运行两个 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

请注意,您必须使用 .= 而不是 = 否则您将得到一个神秘的 no 方法匹配 setindex_shape_check(::Int64,::Int64 ) 1.0 中的错误.. 在 0.7 中给出了一个很好的弃用警告,这是我可能仍然应该使用的。 ;-)

关于indexing - 如何在 Julia 中实现类似于花式索引的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52611462/

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