两天了不知道如何聪明地实现(希望是惰性地):
(~=Matlab的Matrix2Array函数)
a = [1 2;3 4]
a_iwant = [1;2;3;4]
两天了不知道如何聪明地实现(希望是惰性地):
(~=Matlab的Matrix2Array函数)
a = [1 2;3 4]
a_iwant = [1;2;3;4]
我的理解:依次取出每一行,然后按顺序拼接。
因为 julia 是列优先,默认拍平会按列拼接。
所以先转置一下。
Iterators.flatten
返回迭代器,符合惰性要求。
julia> Iterators.flatten(a')
Base.Iterators.Flatten{LinearAlgebra.Adjoint{Int64, Matrix{Int64}}}([1 3; 2 4])
julia> Iterators.flatten(a') |> collect
4-element Vector{Int64}:
1
2
3
4
vec(a)
a' |> vec |> collect # PermutedDimsArray(a, (2, 1)) |> vec |> collect
vcat(eachrow(a)...)
是我
那个PR感觉没人搭理了
这 PR 太难了… 不好 review… 之前比较忙的时候快速的看了几遍但是没明白具体的意思… 也许后面稍微空闲一些会去尝试捡起来再看看…
Generator 本身有一些额外的性能开销,如果能想办法去掉这个的话可能会更容易接受一些。
谢谢建议
我有时间再想想看能不能把Generator
去掉。
不过感觉蛮难的,现在这个@simd
的底层不依靠Generator
能传递的信息确实太少了。