如何在 Julia 中交错数组

bde*_*vic 5 arrays julia

是否可以在 julia 中交错两个数组?

例如,如果a=[1:10]b=[11:20]我希望能够返回

20-element Array{Int64,1}:
  1
  11
  2
  12
  3
  13
  4
  14
  .
  .
  .
Run Code Online (Sandbox Code Playgroud)

有点类似于 ruby​​ 可以做的在 Ruby 中合并和交错两个数组

pau*_*tey 9

有一种简单的方法可以做到这一点,而无需使用该reshape()函数。特别是,我们可以将向量绑定到矩阵中,然后使用[:]该矩阵的转置。例如:

    julia> a = 1:10
    julia> b = 11:20
    julia> [a b]'[:]
    20-element Array{Int64,1}:
     1
    11
     2
    12
     3
    13
     .
     .
     .
    20
Run Code Online (Sandbox Code Playgroud)

对矩阵进行转置[a b]得到一个 2×10 矩阵,然后[:]以向量的形式返回其所有元素。[:]对我们来说如此有效的原因是因为 Julia 使用列优先排序


bde*_*vic 5

弄清楚了!

reshape([a b]',20,1)
Run Code Online (Sandbox Code Playgroud)

对于更一般的事情:

reshape([a b].',size(a,1)+size(b,1),1)
Run Code Online (Sandbox Code Playgroud)

我们可以使用 hack 来获取向量而不是一维数组:

reshape([a b].',size(a,1)+size(b,1),1)[:]
Run Code Online (Sandbox Code Playgroud)