Arrays 如何在julia中交错数组
可以在julia中交错两个数组吗 例如,如果Arrays 如何在julia中交错数组,arrays,julia,Arrays,Julia,可以在julia中交错两个数组吗 例如,如果a=[1:10]和b=[11:20]我希望能够返回 20-element Array{Int64,1}: 1 11 2 12 3 13 4 14 . . . 有点像ruby所能做的明白了 reshape([a b]',20,1) 更一般的是: reshape([a b].',size(a,1)+size(b,1),1) 我们可以使用hack来获取向量,而不是1D数组: reshape([a b].',s
a=[1:10]
和b=[11:20]
我希望能够返回
20-element Array{Int64,1}:
1
11
2
12
3
13
4
14
.
.
.
有点像ruby所能做的明白了
reshape([a b]',20,1)
更一般的是:
reshape([a b].',size(a,1)+size(b,1),1)
我们可以使用hack来获取向量,而不是1D数组:
reshape([a b].',size(a,1)+size(b,1),1)[:]
你可以用
reshape([a b].', length(a)+length(b))
获取向量。有一种简单的方法,无需使用
重塑()。特别是,我们可以将向量绑定到一个矩阵中,然后对该矩阵的转置使用[:]
。例如:
julia> a = 1:10
julia> b = 11:20
julia> [a b]'[:]
20-element Array{Int64,1}:
1
11
2
12
3
13
.
.
.
20
对矩阵进行转置,得到一个2乘10的矩阵,然后以向量的形式返回它的所有元素。之所以[:]
对我们如此有效,是因为Julia使用了 为了完整性,将@bdeonovic的解决方案扩展到二维数组
julia> a
2×2 Array{Int64,2}:
1 2
3 4
julia> b
2×2 Array{Int64,2}:
6 7
8 9
交织行:
julia> reshape([a[:] b[:]]', 4, 2)
4×2 Array{Int64,2}:
1 2
6 7
3 4
8 9
交织柱:
julia> reshape( [a' b']', 2, 4 )
2×4 Array{Int64,2}:
1 6 2 7
3 8 4 9
交织阵列(堆叠/vcatting):
这种差异对于您的用例可能并不重要,但它们将生成20x1数组{Int64,2}
对象,而不是10元素数组{Int64,1}
对象。啊,是的,谢谢您指出这一点。我用这里指定的黑客编辑了答案,谢谢。我想当你显式地使用整形时,这种方法更有用。对于元组数组,这种方法失败了,但是你可以使用permutedims(tuples\u 2D)[:]
而不是tuples\u 2D'[:]
julia> reshape([a' b']', 4, 2)
4×2 Array{Int64,2}:
1 2
3 4
6 7
8 9