gen*_*guy 6 arrays indexing julia
我无法理解 Julia 中看似不一致的行为。
X = reshape(1:100, 10, 10)
b = [1 5 9]
X[2, :][b] # returns the correct array
X[2, :][1 5 9] # throws an error
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么使用变量b可以索引数组,但当我自己编写索引时却不行?
Chr*_*kas 10
由于x = X[2,:]是一个向量,我们可以将示例简化为仅讨论向量上的索引行为。
x[v]其中v是整数集合,返回 的子集x。因此x[(1,5,9)]或x[[1,5,9]]正在使用该getindex(x::Vector,i::AbstractArray)调度。
请注意,这x[[1 5 9]]是有效的,因为它v = [1 5 9]生成了v一个行向量。这是有效的语法,但x[1 5 9]甚至不是有效的 Julia 语法。该语法还有其他含义:
v = Float64[1 5 9]
Run Code Online (Sandbox Code Playgroud)
返回元素类型为 的行向量Float64。
我已经想出了一个解决办法。
X[2, :][1 5 9]我应该写而不是写x[2, :][[1 5 9]]
我相信当我们想象第二次在二维上建立索引时这是有道理的。这使得编写更复杂的索引成为可能,例如X[2:4, :][[1 3],[1 3]]