Mar*_*ion 2 arrays collections julia
我想了解如何能够收集 n × m 维数组的元素并将它们存储到 m 维的 n 向量中。例如,我有以下 3 x 2 数组,我想将每一行的对存储到一个向量中。
Array1 = [ 1 0; 2 0; 3 0]
Run Code Online (Sandbox Code Playgroud)
这给出了:
3×2 Array{Int64,2}:
1 0
2 0
3 0
Run Code Online (Sandbox Code Playgroud)
这个想法是制作一个 for 循环,在每次迭代中将上面数组的值存储到一个二维向量中。
我不知道该怎么做,因为collect到目前为止,该函数只会从我的实验中保存同一列的元素。
那么如何将每一对存储到一个向量中呢?
它可以很简单 collect(eachrow(Array1))
julia> collect(eachrow(Array1))
3-element Vector{SubArray{Int64, 1, Matrix{Int64}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}}, true}}:
[1, 0]
[2, 0]
[3, 0]
Run Code Online (Sandbox Code Playgroud)
这是简短的,更重要的是,类型稳定,因此它比Any[]解决方案更高效。但它创建view的底层Matrix有时不是你想要的,特别是考虑到 Julia 是面向列的,所以行视图会相对较慢。如果是这样的话,你可以去
julia> collect.(eachrow(Array1))
3-element Vector{Vector{Int64}}:
[1, 0]
[2, 0]
[3, 0]
Run Code Online (Sandbox Code Playgroud)
这仍然非常快。
但是您也可以考虑使用这种结构。例如,如果您只想遍历行,那么根本不需要收集,您可以eachrow直接使用而无需中间物化。
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |